我是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/播放器……程序意外结束。
/home/* * */文件/build-player-Desktop-Debug/播放器崩溃
我怎么能集成一个自定义的小部件是写在代码,没有ui在主窗口?
在您自己的MainWindow
类中,您可以为MainWindow
的布局添加一个小部件:
MyMainWindow::MyMainWindow(QWidget *parent) :
...
{
this->ui->setupUi(this);
QLabel *myLabel = new QLabel();
this->layout()->addWidget(myLabel);
}
如果没有初始化,玩家不能被放置在窗口上。像这样写:
Player *player = new Player();
我通常在设计器中的.ui文件中添加一个QWidget(或我要扩展的任何小部件类型),然后将其提升为实际的派生类型。有关推广小部件的更多信息,请参阅Qt文档。这意味着我可以像往常一样设置基本小部件的属性并设计窗口,但在实例化UI时仍然可以获得我的特殊类的实例。
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);
}