Qt4——精彩实例分析5_qt4 源码-程序员宅基地

技术标签: c++  QT学习笔记  qt  

.h

#ifndef MYCLASS_H
#define MYCLASS_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>

//此类继承QDialog
//类内创建需要用到的变量,函数等,在构造函数初始化中填充数据
class MessageBoxMy:public QDialog
{
    
    Q_OBJECT
public:
    //构造函数
    MessageBoxMy();
public:
    //按键对象创建
    QLabel *label1;
    QPushButton *questionButton;    //为正常的操作提示一个简单的询问
    QPushButton *informationButton; //为正常操作提示一个提示
    QPushButton *warningButton;     //提醒用户啊发生了一个错误
    QPushButton *criticalButton;    //警告用户发生了一个严重错误
    QPushButton *aboutButton;       //关于消息框
    QPushButton *aboutqtButton;     //关于QT消息框
    QPushButton *customButton;      //自定义消息框
private slots:
    void slotQuestion();
    void slotInformation();
    void slotWorning();
    void slotCritical();
    void slotAbout();
    void slotAboutQt();
    void slotCustom();

};


#endif // MYCLASS_H

.c

#include"myclass.h"
#include <QMessageBox>
#include <QGridLayout>
#include <QButtonGroup>
MessageBoxMy::MessageBoxMy()
{
    
    //设置主题
    setWindowTitle("MessageBox Use");

    label1 = new QLabel("About QT MessageBox");

    //创建按键并将文本显示在按键上
    questionButton = new QPushButton("Quessage");
    informationButton = new QPushButton("Information");
    warningButton = new QPushButton("warning");
    criticalButton = new QPushButton("critical");
    aboutButton = new QPushButton("about");
    aboutqtButton = new QPushButton("about qt");
    customButton = new QPushButton("custom");

    //布局管理
    QGridLayout *layout = new QGridLayout(this);
    layout->addWidget(label1,0,0,1,2);//放在第0行0列,跨度为1行2列(占一行两列)
    layout->addWidget(questionButton,1,0);
    layout->addWidget(informationButton,1,1);
    layout->addWidget(warningButton,2,0);
    layout->addWidget(criticalButton,2,1);
    layout->addWidget(aboutButton,3,0);
    layout->addWidget(aboutqtButton,3,1);
    layout->addWidget(customButton,4,0);

    //信号与槽连接
    connect(questionButton,SIGNAL(clicked()),this,SLOT(slotQuestion()));
    connect(informationButton,SIGNAL(clicked()),this,SLOT(slotInformation()));
    connect(warningButton,SIGNAL(clicked()),this,SLOT(slotWorning()));
    connect(criticalButton,SIGNAL(clicked()),this,SLOT(slotCritical()));
    connect(aboutButton,SIGNAL(clicked()),this,SLOT(slotAbout()));
    connect(aboutqtButton,SIGNAL(clicked()),this,SLOT(slotAboutQt()));
    connect(customButton,SIGNAL(clicked()),this,SLOT(slotCustom()));

}

//曹函数实现

//对于question消息框,调用时直接使用QMessageBox::question()即可
//第一个参数为消息框的父窗口指针
//第二个参数为消息框的标题栏
//第三个参数为消息框的问题提示
//第四个参数为对消息框按钮的设定QMessageBox提供了很多的标准按钮直接调用,用“|”连写,默认为OK
//第五个参数为消息框出现时,焦点默认在哪个按钮上
void MessageBoxMy::slotQuestion()
{
    
    switch(QMessageBox::question(this,"Question","已到达文档结尾,是否从头查找?",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
    {
    
       case QMessageBox::Ok:
            label1->setText("Question Button/OK");
            break;
       case QMessageBox::Cancel:
            label1->setText("Question Button/Cancel");
            break;
        default:
            break;
    }
    return;
}

//QMessageBox::information()
//第一个参数为消息框的父窗口指针
//第二个参数为消息框的标题栏
//第三个参数为消息框的问题提示
//后面两个参数与Qusetion用法一样,但在使用中,经常省略,直接使用默认的OK
//Qusetion()和information()可以通用,使用Qusetion的地方都可以使用information替换
void MessageBoxMy::slotInformation()
{
    
    QMessageBox::information(this,"Information","填写任意想告诉于用户的信息!");
    return;
}


//MessageBoxMy::slotWorning()
//用法都大差不差
void MessageBoxMy::slotWorning()
{
    
    switch(QMessageBox::warning(this,"warning","是否保存对文档的修改",
                                QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save))
    {
    
        case QMessageBox::Save:
            label1->setText("warning button/save");
            break;
        case QMessageBox::Discard:
            label1->setText("warning button/discard");
            break;
        case QMessageBox::Cancel:
            label1->setText("warning button/cancel");
            break;
        default:
            break;
    }
    return;
}

//Critical()消息框是在系统出现严重错误的时候对用户进行提醒
//通常只填前三个参数
void MessageBoxMy::slotCritical()
{
    
    QMessageBox::critical(this,"critical","致命错误");
    label1->setText("Critical Message!");
    return;
}

//提供系统的版本信息,只需提供信息而不需要用户反馈信息,只需填写前三个参数即可
void MessageBoxMy::slotAbout()
{
    
    QMessageBox::about(this,"About","测试试验");
    label1->setText("About test!");
    return;
}


//About qt消息框是QT预定好的消息框,用于提供QT的相关信息
//只需提供两个参数即可,显示内容是QT自己预定好的
void MessageBoxMy::slotAboutQt()
{
    
    QMessageBox::aboutQt(this,"AboutQT");
    label1->setText("AboutQT test!");
    return;
}
//
void MessageBoxMy::slotCustom()
{
    
    QMessageBox customMsgBox;//创建一个QMessageBox对象
    customMsgBox.setWindowTitle("Custom message box!!!");//设置标题栏
    //第一个参数为按钮显示的文字,第二个参数为按钮类型的描述
    QPushButton *lookbutton = customMsgBox.addButton("锁定",QMessageBox::ActionRole);//在窗口上添加按键并让按键显示固定文字
    QPushButton *unlookbutton = customMsgBox.addButton("解锁",QMessageBox::ActionRole);
    //取消按键只需要一个参数
    QPushButton *cancelbutton = customMsgBox.addButton(QMessageBox::Cancel);

    //customMsgBox.setIconPixmap(QPixmap(":/图片路径"));
    customMsgBox.setText("这是一个自定义的消息框");
    customMsgBox.exec();//进入消息循环,等待可能输入进行响应

    //判断按键按下显示对应字符
    if(customMsgBox.clickedButton() == lookbutton)
        label1->setText("LOOK");
    if(customMsgBox.clickedButton() == unlookbutton)
        label1->setText("UNlook");
    if(customMsgBox.clickedButton() == cancelbutton)
        label1->setText("cancel");
    return;
}

main.c

#include "mainwindow.h"
#include <QApplication>
#include "myclass.h"
int main(int argc, char *argv[])
{
    
    QApplication a(argc, argv);

    MessageBoxMy b;
    b.show();

    return a.exec();
}

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KK_546464/article/details/123215104

智能推荐

mongodb查询两个字段值相同的记录-程序员宅基地

文章浏览阅读6.1k次。2019独角兽企业重金招聘Python工程师标准>>> ..._mongo 查询a,b字段相通

python合并单元格出现:‘MergedCell‘ object attribute ‘value‘ is read-only 如何处理_mergedcell' object attribute 'value' is read-only-程序员宅基地

文章浏览阅读2.2w次,点赞5次,收藏13次。出现这种错误一般都是在用方法:ws.merge_cells() 合并单元格后,直接给单元格赋值导致的。经过我的不断尝试,发现在合并单元格的初始位置赋值就不会出现问题。比如以下代码:from openpyxl import Workbookwb = Workbook()ws = wb.activews.merge_cells('A2:A99')ws['A2'] = 'TEST' # 给合并开头的的格子赋值,成功wb.save("D:test.xlsx")可正常运行,但如果将ws['_mergedcell' object attribute 'value' is read-only

利用计算机的数字化技术和人机交换,数字摄影测量学习题-程序员宅基地

文章浏览阅读190次。数字摄影测量学习题与参考答案一、名词解释1、数字摄影测量:基于数字影像和摄影测量的基本原理,应用计算机技术、数字影像处理、影像匹配,模式识别等多学科的理论与方法,提取所摄对像以数字方式表达的几何与物理信息的摄影测量学的分支学科。2、计算机辅助测图(机助测图)以计算机及其输入、输出设备为主要制图工具实现从影像中提取地图信息及其转换、传输、存贮、处理与显示。3、影像的颗粒噪声:采用摄影方式获得光学影像..._数字摄影测量课后题答案

VIM代码 格式化与注释 自动对齐_vim模式备注对齐-程序员宅基地

文章浏览阅读9k次。最近在逛CSDN论坛时经常会苦恼一个问题——有些网友贴上去的代码没有用规范的格式贴上去,我贴到VIM里常常会需要手动调整格式,非常麻烦。每当这个时候就异常怀念以前用VC6.0时的ALT+F8……想下VIM作为一个程序员们最贴心的编辑器,显然不会对此坐视不理。经过一番的Search,果然就找到了一些最常用的简单技巧,笔记一下以备后来不时之需。 VIM格式化代码: 格式化全文指令 gg=G _vim模式备注对齐

eclipse 中自定义EL表达式时创建tld文件-程序员宅基地

文章浏览阅读82次。eclipse本身不带有tld文件,所以一般会创建一个xml文件,修改为tld文件1.在WEB-INF文件下创建一个xml文件,修改名字为ELTest.tld2.点击next,选择,然后点击next3.依次选择下面三个选项4.直接finish5这时候已经创建好了一个tld文件,下面重点来了,对tld文件进行配置,在 1.0这个标签上面,用直接覆盖你文件里面这..._eclipse 自定义tld 和使用

修改树莓派交换分区 SWAP 的正确姿势_树莓派派 failed to activate swap /swapfile-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏6次。树莓派实验室按:Swap分区是磁盘上的一个特殊用途的分区。是当系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。分配太多的Swap空间,会浪费磁盘空间,而Swap空间太少,则系统会发生错误。一般在内存..._树莓派派 failed to activate swap /swapfile

随便推点

计算机网络之IP篇_ip csdn-程序员宅基地

文章浏览阅读2.9k次,点赞38次,收藏53次。首先这是个 IPv4 地址,IPv4 地址有 32 位,一个字节有 8 位,共 4 个字节。其中 127 开头的都属于回环地址,也是 IPv4 的特殊地址,没什么道理,就是人为规定的。而 127.0.0.1 是众多回环地址的一个。之所以不是 127.0.0.2 ,而是 127.0.0.1 ,是因为源码里就是这个定义的,也没什么道理。_ip csdn

【谷粒商城】【认证服务】验证码、社交登录、分布式session、单点登录_谷粒商城实现qq微信登录-程序员宅基地

文章浏览阅读2.4w次,点赞26次,收藏90次。本文是谷粒商城项目笔记文章目录认证服务**1 gulimall-auth-server****2 注册验证码**(1) 验证码倒计时(2) 阿里云-短信服务(3) 接口防刷(4) 注册VO(5) 注册用户保存(6)密码加密(7) 用户名密码登录**3 社交登录**(1) OAuth2.0(2) 微博开放平台使用(3) 代码编写/weibo/successtoken保存**4 SpringSession**(1) session 原理(2) 分布式session解决方案1) session复制2) h._谷粒商城实现qq微信登录

【Cadence Allegro16.6教程】04 绘制原理图_cadence 原理图 距离分配-程序员宅基地

文章浏览阅读777次,点赞8次,收藏12次。本文介绍了如何用Cadence Allegro 16.6在原理图中连线、放置地和电源、放置网络标号。_cadence 原理图 距离分配

windows oracle通过dblink连接mysql_oracle通过dblink连接mysql windows-程序员宅基地

文章浏览阅读547次。1)报错500,解决方案:安装.NET Core2)报错503 --解决方法一:更新windous _oracle通过dblink连接mysql windows

js对联广告滚动代码可关闭-程序员宅基地

文章浏览阅读73次。如下图演示:演示地址:jsad-code-for-couplet-scroll-38/index.htm下载地址:jsad-code-for-couplet-scroll-38.zip网站地图:12345678910111213141516171819202122232425262728293031323334..._js对称对联可关闭

转:mysql show processlist命令 详解-程序员宅基地

文章浏览阅读44次。转:mysql show processlist命令 详解processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。1.进入mysql/bin目录下输入mysqladmin processlist;2.启动mysql,输入show processlist;如果有SUPER...

推荐文章

热门文章

相关标签