Qt — Что подразумевается под этими строками кода

#c #qt #dialog

#c #qt #диалоговое окно

Вопрос:

В C GUI Programming with Qt 4 книге, являющейся частью создания диалогового приложения, был следующий main.cpp файл:

 #include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::GoToCellDialog ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}
  

Можете ли вы просто описать эти строки кода?

     Ui::GoToCellDialog ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
  

Спасибо.

Ответ №1:

«ui_gotocelldialog.h» — это файл, сгенерированный автоматически на основе файла «gotocelldialog.ui», который содержит графический интерфейс для диалогового окна. Для инициализации пользовательского интерфейса необходимо вызвать Ui::GoToCellDialog::setupUi().

Комментарии:

1. Почему dialog передается как параметр?

2. Можете ли вы более подробно описать, как эти три строки работают вместе?

3. Он создает и размещает виджеты, как описано в gotocelldialog. файл пользовательского интерфейса. Виджеты, которые он создает, размещаются внутри виджета, который передается ему. В этом случае переданный ему виджет представляет собой диалоговое окно.

4. @user58855: Думайте о setupUi() как о «применении пользовательского интерфейса к заданному диалоговому окну». Он добавляет в диалоговое окно виджеты и настраивает соединения сигнал / слот, определенные в файле пользовательского интерфейса.

Ответ №2:

Давайте посмотрим:

 Ui::GoToCellDialog ui;
  

Эта строка создает экземпляр GoToCellDialog . Как уже было сказано, этот класс автоматически генерируется из gotocelldialog.ui файла. Вариант использования таков:

  1. Откройте qt-designer и создайте нужный вам интерфейс.
  2. Сохраните файл (в нашем случае gotocelldialog.ui )
  3. В вашем cpp-файле напишите #include "ui_gotocelldialog.h"
  4. Теперь вы можете использовать разработанный вами интерфейс
  5. ПРИБЫЛЬ????

Далее:

 QDialog *dialog = new QDialog;
  

Эта строка создает новый экземпляр QDialog класса, который представляет простое модальное окно (обычно называемое dialog). Но ваше окно было бы пустым после этой строки. Вам нужно разместить элементы управления, не так ли? Как вы можете это сделать? Давайте посмотрим:

 ui.setupUi(dialog);
  

В этой строке используется интерфейс, разработанный вами в qt-designer. Он помещает этот интерфейс во вновь созданное диалоговое окно. Таким образом, вы можете видеть все элементы управления в окне. Довольно просто, как по мне.

Ответ №3: