Как добавить пользовательский виджет в главное окно в 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/проигрыватель разбился

Как я могу интегрировать пользовательский виджет, написанный в коде, без пользовательского интерфейса в главном окне? Заранее спасибо.


person Rareform    schedule 17.05.2015    source источник


Ответы (3)


В своем собственном классе MainWindow вы можете добавить виджет в макет этого MainWindow:

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

    QLabel *myLabel = new QLabel();

    this->layout()->addWidget(myLabel);
}
person goulashsoup    schedule 26.10.2018
comment
Должен ли я вызвать здесь удаление для myLabel? - person Ivan P.; 28.11.2020

Ну, плеер нельзя разместить на окне, если он не инициализирован. Напишите что-то вроде этого:

Player *player = new Player();
person La masse    schedule 17.05.2015

Обычно я добавляю QWidget (или любой другой тип виджета, который я расширяю) в свой .ui-файл в дизайнере, а затем продвигаю его до фактического производного типа. Дополнительную информацию о продвижении виджетов см. в документах Qt< /а>. Это означает, что я могу установить свойства базового виджета и спроектировать окно как обычно, но при этом получить экземпляр моего специального класса при создании экземпляра пользовательского интерфейса.

person user408952    schedule 17.05.2015