作者:手机电视2602907765 | 来源:互联网 | 2023-10-10 21:03
目录1.需要文件2.文件关系及编写3.源码4.界面的模态与非模态1.需要文件test.cpptest.htest.uiui_test.h2.文件关系及编写tes
目录
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
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
#include
namespace Ui {
class testC;
}
class testC : public QDialog
{
Q_OBJECT
public:
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();
}
这样就是非模态窗口,非模态就是弹窗和主窗口互不阻塞,弹出子窗口,仍然可以操作主窗口。