大家好,欢迎来到IT知识分享网。
1. 界面基本认识
QT提供了三个界面:QMainWindow、QWidget、QDialog
1.1 QMainWindow
称为“主界面”,该界面一般是作为顶层窗口使用,该界面包含了菜单栏、工具栏、状态栏以及工作区等信息
1.2 QWidget
所有可视化窗口的父类,QMainWindow、QDialog、QPushButton等等的父类都QWidget,一般QWidget既可以作为顶层窗口使用,也可以嵌入到其它窗口中
1.3 QDialog
基于简单对话框的窗口,不具备菜单栏、工具栏、状态栏以及工作区等功能,一般是作为顶层窗口使用
创建QDialog界面:
(1)创建项目时就已经创建了一个界面
(2)自己创建界面
选择工程文件夹右击—->添加新文件—>-Qt—->QT设计器界面类—->Dialog Without Buttons
1.3.1 基本函数
方法
具体不演示了
show();//将界面显示出来,以非模态形式进行显示 hide();//将界面进行隐藏 close(); //将界面进行关闭 void resize(const QSize &size); //后期可以再对界面的大小进行放缩 void resize(int w, int h);//设置界面的大小 void setFixedSize(const QSize &size); //设置界面的固定大小,后期不允许更改界面的大小 void setFixedSize(int w, int h);//设置界面的大小 void setWindowTitle(const QString &obj); //设置窗口的标题,QString QT中提供的强大关于字符串处理的类 void setWindowIcon(const QIcon &icon);//设置界面的LOGO void setSizeGripEnabled(bool); //设置窗口右下脚是否有斜三角网格图标 bool isSizeGripEnabled() const ;//可以返回右下角是否有斜三角图标,如果有返回true,如果没有,返回false void setResult(int i) ; //设置界面的返回值 int result() const ; //获取界面的返回值 void setModal(bool modal) ;//设置对话框的模式 void exec(); //设置对话框以模态形式显示 QString windowTitle() const //获取窗口的标题
UI界面属性:
objectName:对象名 enabled:设置是否启用界面的操作 geometry:设置界面的几何特性
添加图片资源
1.3.2对话框的模式分类:
模态对话框和非模态对话框
(1)模态对话框:也称为阻塞对话框,是指当前界面是以模态形式显示,如果当前界面没有被关闭,那么后序界面就不能进行相关的操作,模态一般采用exec()方法进行显示
(2)非模态对话框:也称为非阻塞对话框,是指当前界面是以非模态形式显示,如果当前界面没有被关闭,那么后序界面就能进行相关的操作,一般使用show()方法进行显示
1.3.3 信号使用:
void windowIconChanged(const QIcon &icon)//当LOGO变化时,触发该信号
void windowTitleChanged(const QString &title)//当标题变化时,触发该信号
这里演示标题变化触发信号
set_desktop_test2
槽
mydialog.h
private slots: void on_pushButton_clicked(); void print(const QString&title );//这个槽用来验证标题发生变化时
实现
mydialog.cpp
void Mydialog1::print(const QString &title) { qDebug()<<"更新的标题:"<<title<<endl; }
绑定
mydialog.cpp
//绑定当标题变化时,触发该信号 connect(this,SIGNAL(windowTitleChanged(QString)),this,SLOT(print(QString)));
main.cpp
#include "mydialog1.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Mydialog1 w; w.setWindowTitle("hello");//改变标题 w.setWindowTitle("world");//改变标题 w.show(); return a.exec(); }
1.3.4 练习两个界面的相互打开和关闭
创建两个界面,两个界面中各有一个按钮,点击其中一个界面中的按钮,能实现打开另外一一个界面并且关闭当前界面(实现界面的切换)
设置两个界面都选择 —-转到槽—clicked()
set_jiemian_test
在槽函数中
Mydiamlog.cpp
#include "mydiamlog.h" #include "ui_mydiamlog.h" #include "jiemian1.h" Mydiamlog::Mydiamlog(QWidget *parent) : QDialog(parent) , ui(new Ui::Mydiamlog) { ui->setupUi(this); } Mydiamlog::~Mydiamlog() { delete ui; } //界面1按钮的槽函数 void Mydiamlog::on_pushButton_clicked() { //关闭当前界面 this->close(); //打开另一个界面 // Jiemian1* jiemian1 = new Jiemian1; // jiemian1->show(); //以阻塞模式打开界面 Jiemian1 jiemian1; jiemian1.exec(); }
Jiemian1.cpp
#include "jiemian1.h" #include "ui_jiemian1.h" #include "mydiamlog.h" Jiemian1::Jiemian1(QWidget *parent) : QDialog(parent), ui(new Ui::Jiemian1) { ui->setupUi(this); //设置标题 this->setWindowTitle("jiemian1"); } Jiemian1::~Jiemian1() { delete ui; } void Jiemian1::on_pushButton_clicked() { //关闭当前界面 this->close(); //打开另一个界面 // Mydiamlog* mydialog1 = new Mydiamlog; // mydialog1->show(); //以阻塞模式打开界面 Mydiamlog mydialog1; mydialog1.exec(); }
阻塞模式打开效果一样
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109688.html








