QT编程-----------------窗口部件的使用(QWidget和QDialog)
窗口部件
QT提供的默认基类只有QMainWindow、QWidget、和QDialog这三种,这三种窗体也是用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而他们全部继承自QWidget。不仅如此,所以的窗口部件都继承自QWidget,继承关系如图所示。
2.多窗口切换
Qt使用信号与槽机制来完成对象之间的协同操作,简单来说,信号与槽都是函数,比如单击窗口上一个按钮弹出一个对话框,那么可以将这个按钮的单击信号和自定义的槽函数关联起来,在这个槽中创建一个对话框来显示他。
void Widget::on_pushButton_clicked(){QDialog *dialog =new QDialog();dialog->exec();}
3.自定义对话框
这里可以自定义一个对话框,来实现与主界面的切换,比如先弹出来登录界面,之后点击按钮来实现切换到主界面。
第一步,添加登录框,首先添加QT设计师界面类,界面模版和类名选好后,加入控件,如图
第二步,设计信号与槽,在退出程序的按钮上实现信号与槽,如图:
F4进入信号与槽编辑模式,然后左键拖动到要关联的控件,之后在弹出的对话框中选择信号与槽,之后可以按F3退出。之后是进入主界面按钮的信号与槽,右键转到槽,在里面写上accept(),这个accept()函数就是QDialog类的一个槽,对于一个使用exec函数实现的模态对话框,执行这个槽就会隐藏这个模态对话框,并返回QDialog::Accepted值,这里就是要使用这个值来判断是哪个按钮被按下了,与其对应的还有一个reject()槽,它可以返回一个QDialog::Rejected值,前面的“退出程序”按钮也可以关联这个槽。
第三步,设置主界面 main.cpp函数如下:
#include "widget.h"
#include <QApplication>
#include "mydialog.h"
int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;MyDialog dialog; //新建自定义MyDialog对象if(dialog.exec() == QDialog::Accepted) //判断dialog执行结果{w.show(); //如果按下了“进入主界面”按钮,则进入主界面return a.exec();}else return 0; //否则退出程序}
dialog.exec()先显示模态对话框,如果点击了按钮,由于设置了进入主界面的槽是acccept(),所以返回值= QDialog::Accepted是符合要求的,就会消失登陆界面转到显示主界面正常执行。
在主界面.ui文件里加上重新登录按钮和退出。退出的信号与槽和前面的退出一样,F4关联close()即可;重新登录的按钮先创建clicked()的槽,并改成如下:
#include "widget.h"
#include "ui_widget.h"
#include <QDialog>
#include "mydialog.h"
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}
Widget::~Widget()
{delete ui;
}
void Widget::on_pushButton_clicked(){ //按下重新登录先隐藏当前界面close();MyDialog dlg;//显示登陆界面,如果返回值等于这个,也就是点击了登录,那么程序显示主界面,如果不是,由于此时没有可以显示的界面就会完全退出程序if(dlg.exec() ==QDialog::Accepted)show();
}
!
QT编程-----------------窗口部件的使用(QWidget和QDialog)相关推荐
- Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog)
窗口部件 QT提供的默认基类只有QMainWindow.QWidget.和QDialog这三种,这三种窗体也是用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话 ...
- 【原创】Qt自定义窗口部件
QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin) 改进法 1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinB ...
- Python Qt GUI设计:QMainWindow、QWidget和QDialog窗口类(基础篇—10)
目录 1. QMainWindow窗口 2.QWidget窗口 3.QDialog窗口 3.1.QMessageBox窗口 3.2.QInputDialog窗口 3.3.QFontDialog窗口 3 ...
- Qt学习笔记之QMainWindow,QWidget,QDialog
QT提供的默认基类只有QMainWindow.QWidget.和QDialog这三种,QT提供的默认基类只有QMainWindow.QWidget.和QDialog这三种,这三种窗体也是用的最多的,Q ...
- Qt4_在Qt设计师中集成自定义窗口部件
在Qt设计师中集成自定义窗口部件 在Qt设计师中使用自定义窗口部件之前,我们必须让Qt设计师先察觉到它们的存在.有两种方法可以完成这一任务:改进法(promotion)和插件法(pluigin). 改 ...
- qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...
用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...
- Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
Qt其他窗口部件 1. QFrame 1.1 QLabel 1.2 QLCDNumber 1.3 QStackedWidget 1.4 QToolBox 2. QAbstractButton 2.1 ...
- 第二章 Qt编程核心技术
QT编程核心技术介绍 第二章 Qt编程核心技术 Qt/X11与Qt/Embedded版本的Qt类库,尽管类的底层实现有一些细微区别,但类的声明及方法函数是一样的,对于编写Qt应用程序的编程者来说,几乎 ...
- QT编程核心技术介绍
第二章 Qt编程核心技术 Qt/X11与Qt/Embedded版本的Qt类库,尽管类的底层实现有一些细微区别,但类的声明及方法函数是一样的,对于编写Qt应用程序的编程者来说,几乎不需要关心这些区别,使 ...
- Qt子窗口QMidSubwindow全屏出现的问题总结
我的需求:想全屏一个子窗口QMidSubwindow,禁止显示最大化最小化和关闭按钮. 我开始尝试的是网上介绍的方法,把结果展现给大家一下,最后再总结: 方法1:QMidSubwindow直接调用sh ...
最新文章
- 第十五届全国大学生智能车人工智能创意组复赛首批团队名单
- MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本
- 技术网站 --入门无忧网
- MySQL Merge引擎实现分表
- 异步过程的自动化测试
- mysql -- 索引的使用
- 1115. Counting Nodes in a BST (30) 数据结构
- 如何给APP开发属于自己的小程序
- pb 数据窗口 *号隐藏_王者荣耀背后的腾讯自研数据库TcaplusDB实践
- php宠物社交领养网站
- 数据库建表语句的使用及简单实战
- 计算机编程的英语单词大全,计算机编程常用英语单词
- 常见后端数据存储问题解决方案
- 流落在帝都的那些80后北漂IT人,你们的未来在哪儿
- 语音识别(ASR)论文优选:端到端ASR综述Recent Advances in End-to-End Automatic Speech Recognition
- 男人应享有动听词汇的权利
- 沃尔玛账号被冻结后如何进行申诉?
- 16进制数组和ASK码字符之间的转换
- 娱乐明星为何纷纷入局元宇宙?
- [运维] proxmox ve 与 vSphere 对比
热门文章
- Android TableLayout 表格布局
- rk3399_android7.1关于secureboot操作说明
- python中的import
- Java面向对象之内部类(访问格式)
- Numpy包简单介绍
- java线程中yield(),sleep(),wait()区别详解
- 关于vs2003调试时出错:“试图运行项目时出错:无法启动调试”解决
- mavros常用消息类型表
- C++RAII惯用法:C++资源管理的利器
- 二十七、K8s最小服务漏洞1-PSP