Qt在Application中创建窗体

怎甘沉沦 提交于 2020-08-11 03:47:11

Qt的GUI编程中都会有一个自动生成的主MainWindow,如果要创建对话框或者其他类型的子窗体,最好能提前创建窗体,当需要时再调用即可。具体步骤建议如下:

1:使用Qt自带的设计师界面类,既包含ui文件,也包括完整的cpp类文件。

2:生成对应的三个文件

3:在主窗体类中创建窗体对象

主窗体h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//#include <QAction>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }

class QAction;
class QMenu;
class Spreadsheet;
class Find_dialog;
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    void find();

    // code...

private:
    Ui::MainWindow *ui;

    enum {
      MAX_RECENT_FILES_ = 5
    };

    Spreadsheet* spread_sheet_;
    Find_dialog* find_dialog_;

    QMenu* file_menu_;
    QMenu* edit_menu_;

    QAction* new_action_;
    QAction* exit_action_;

    QAction* find_dialog_action_;
    QAction* about_qt_action_;
};
#endif // MAINWINDOW_H

主窗体cpp文件

// code

void MainWindow::find()
{
    if ( !find_dialog_) {
        find_dialog_ = new Find_dialog(this);
        find_dialog_->setFixedSize(find_dialog_->width(), find_dialog_->height());
    }

    // 对话框设置为modal并显示
//    find_dialog_->setWindowModality(Qt::WindowModality::WindowModal);
//    find_dialog_->show();
//    find_dialog_->activateWindow();

    // 对话框设置为modal并显示
    if (find_dialog_->exec()) {
        find_dialog_->setToolTip(tr("ssssssssssssssssssssssss"));
    }
}

两种modal显示子窗体。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!