Loading... ### 1、窗口类别 #### 1.1 QMainWindow 文档对话框 > QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周 围 菜单、工具条和一个状态条。 > QMainWindow 常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工 具条按钮时,槽会被调用。 #### 1.2 QWidget 对话框 > QWidgt 类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按 Z 轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 #### 1.3 QDialog 模态框 > QDialog 类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。 > QDialog 可以是模态对话框也可以是非模态对话框。 > QDialog 支持扩展性并且可以提供返回值。它们可以有默认按钮。 ### 2、设置窗口大小 ```c++ // 如果出现中文乱码在头文件中加入下面语句 #pragma execution_character_set("utf-8") // 设置窗口标题 this->setWindowTitle("Qt5 窗口标题"); // 设置最大窗口大小 this->setMaximumSize(300,300); // 设置最小窗口大小 this->setMinimumSize(300,300); ``` ### 3、设置窗口位置和颜色 ```c++ // 把窗口移动至 屏幕的 100,100位置 默认在屏幕中心 setGeometry this->move(100,100); // 设置背景颜色 红色 this->setStyleSheet("background:red"); ``` ### 4、修改标题栏图标 ```c++ #include <QApplication> #include <QDir> QString dir = QApplication::applicationDirPath(); //设置可执行程序路径为当前工作路径 QDir::setCurrent(dir); // 添加程序引用的创建目录 QApplication::addLibraryPath("./plugins"); // 添加image目录 QApplication::addLibraryPath("./images"); // 更具目录找图片然后设置窗口 图标 this->setWindowIcon(QIcon("123.ico")); ``` ### 5、无边框窗口移动 ```c++ // 设置窗口为无边框 this->setWindowFlags(Qt::FramelessWindowHint); // 创建一个按钮 因为 标题栏去掉后 无法关闭窗口 // 需要引入头文件 #incluide <QPushButton> QPushButton* pBtClose = new QPushButton(this); pBtClose->setText("关闭"); connect(pBtClose,&QPushButton::clicked,[&](){close();}); QPoint last; #include <QMouseEvent> //引用鼠标类头文件 //获取鼠标点定位窗体位置 void mousePressEvent(QMouseEvent *e) { last = e->globalPos(); } void mouseMoveEvent(QMouseEvent *e) { int dx = e->globalX() - last.x(); int dy = e->globalY() - last.y(); last = e->globalPos(); move(x()+dx,y()+dy); } void mouseReleaseEvent(QMouseEvent *e) { int dx = e->globalX() - last.x(); int dy = e->globalY() - last.y(); move(x()+dx, y()+dy); } ``` ### 6、去最小化、最大化按钮 ```c++ // 关闭按钮失效 this->setWindowFlags(Qt::WindowMinMaxButtonsHint); // 去掉最大化、最小化按钮,保留关闭按钮 this->setWindowFlags(Qt::WindowCloseButtonHint); ``` ### 7、多窗口 ```c++ // 新建一个窗口类 Qt Gui (类名为 Window2) Window2 w2; QPushButton* pW2 = new QPushButton(this); pW2->setText("打开窗口"); // 设置按钮位置 // 50,50 设置按钮的位置 // 70,20 按钮的大小 pW2->setGeometry(QRect(50,50,70,20)); connect(pW2, &QPushButton::clicked,[&](){w2.show()}); ``` ### 8、透明窗口 ```C++ // 去除标题栏 this->setWindowFlags(Qt::FramelessWindowHint); // 设置背景透明 this->setAttribute(Qt::WA_TranslucentBackground,true); // 透明窗口必须要设置上面条件 ``` 最后修改:2020 年 10 月 15 日 05 : 44 PM © 允许规范转载