繁体   English   中英

如何在 Qt Creator 的主窗口中添加自定义小部件

[英]How to add a custom widget to the main window in Qt Creator

我是 Qt 的新手。 我从这里举了一个例子http://doc.qt.io/qt-5/qtmultimediawidgets-player-example.html 现在我想将播放器集成到主窗口中。 我创建了一个 Qt Widgets 应用程序项目,我想,我只需要编辑主窗口代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    Player* player;
    MainWindow::setCentralWidget(player);

}

但它不起作用,我收到以下错误:

正在启动 /home/***/Documents/build-player-Desktop-Debug/player... 程序意外完成。

/home/***/Documents/build-player-Desktop-Debug/player 崩溃

如何在主窗口中没有 ui 的情况下集成用代码编写的自定义小部件? 先感谢您。

好吧,如果没有初始化,播放器不能放在窗口上。 写这样的东西:

Player *player = new Player();

我通常在设计器中将 QWidget(或我要扩展的任何小部件类型)添加到我的 .ui 文件中,然后将其提升为实际的派生类型。 有关推广小部件的更多信息,请参阅Qt 文档 这意味着我可以像往常一样设置基本小部件的属性并设计窗口,但在实例化 UI 时仍然获得我的特殊类的实例。

在您自己的MainWindow类中,您可以向该MainWindow的布局添加一个小部件:

MyMainWindow::MyMainWindow(QWidget *parent) :
    ...
{
    this->ui->setupUi(this);

    QLabel *myLabel = new QLabel();

    this->layout()->addWidget(myLabel);
}
MainWindow:MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    SomeStupidWidget *ssw = new SomeStupidWidget(this); /* important! don't forget about passing "this" as argument, otherwise this could cause a memory leak(Qt handles object's lifetime by means of it's "owner" mechanism)*/

    layout()->addWidget(ssw);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM