目录
1. 需要文件
2.文件关系及编写
3. 源码
4. 界面的模态与非模态
1. 需要文件
test.cpp
test.h
test.ui
ui_test.h
2.文件关系及编写
test.ui: 可视化界面;
test.cpp: 启动可视化界面,及可视化界面的各种相关功能源文件;
test.h: 头文件,类名就是ui的objectName;
ui_test.h: 会自动生成;
3. 源码
ui->setupUi(this):
对界面进行初始化,它按照Qt设计器里设计的样子把窗体画出来,把Qt设计器里面定义的信号和槽建立起来。
#include "test.h"
#include "ui_test.h"
#include <QMessageBox>testC::testC(QWidget *parent):QDialog(parent),ui(new Ui::testC)
{// 不显示问号Qt::WindowFlags flags = Qt::Dialog;flags |= Qt::WindowCloseButtonHint;setWindowFlags(flags);ui->setupUi(this);setFixedSize(200, 200); // 不能伸缩的对话框
}testC::~testC()
{delete ui;}void testC::test_fun()
{QMessageBox msgBox;msgBox.setText("This is a test function!");msgBox.exec();
}void testC::on_test_clicked()
{test_fun();
}
C++中,命名空间使用namespace来声明,并使用{ }来界定命名空间的作用域,C++中标准命名空间std,std 是 standard 的缩写,意思是“标准命名空间”;C++标准库中的函数或者对象都是在命名空间std中定义的;Qt中有自带namespace:
#ifndef TEST_H
#define TEST_H#include <QWidget>
#include <QDialog>namespace Ui {
class testC;
}class testC : public QDialog
{Q_OBJECTpublic:explicit testC(QWidget *parent = Q_NULLPTR);~testC();private slots:void test_fun();void on_test_clicked();private:Ui::testC *ui;
};
#endif // TEST_H
4. 界面的模态与非模态
testC::testC(QWidget *parent):QDialog(parent),ui(new Ui::testC)
{// 不显示问号Qt::WindowFlags flags = Qt::Dialog;flags |= Qt::WindowCloseButtonHint;setWindowFlags(flags);ui->setupUi(this);setFixedSize(200, 200); // 不能伸缩的对话框setModal(false); // 非模态对话框show();
}
这样就是非模态窗口,非模态就是弹窗和主窗口互不阻塞,弹出子窗口,仍然可以操作主窗口。