Qt精彩实例(2)

实例5.各种消息框
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QLabel>
#include <QGridLayout>
namespace Ui {
    class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    QGridLayout *layout;
    QLabel *ab;
    QPushButton *question;
    QPushButton *information;
    QPushButton *warning;
    QPushButton *critical;
    QPushButton *abort;
    QPushButton *aqt;
    QPushButton *custom;
    QLabel *label;
private:
    Ui::Dialog *ui;
private slots:
    void slotQuestion();
    void slotInformation();
    void slotWarning();
    void slotCritical();
    void slotAbout();
    void slotAboutQt();
    void slotCustom();
};
#endif // DIALOG_H


dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QMessageBox>
#include <QtGui>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    setWindowTitle(tr("Qing"));
    layout = new QGridLayout(this);
    ab = new QLabel(tr("qt messagebox"));
    question = new QPushButton(tr("question"));
    information = new QPushButton(tr("information"));
    warning = new QPushButton(tr("warning"));
    critical = new QPushButton(tr("critical"));
    abort = new QPushButton(tr("abort"));
    aqt = new QPushButton(tr("aqt"));
    custom = new QPushButton(tr("custom"));
    label = new QLabel;
    layout->addWidget(ab,1,0);
    layout->addWidget(question,2,0);
    layout->addWidget(information,2,1);
    layout->addWidget(warning,3,0);
    layout->addWidget(critical,3,1);
    layout->addWidget(abort,4,0);
    layout->addWidget(aqt,4,1);
    layout->addWidget(custom,5,0);
    layout->addWidget(label,6,0);
    connect(question, SIGNAL(clicked()), this, SLOT(slotQuestion()));
    connect(information, SIGNAL(clicked()), this, SLOT(slotInformation()));
    connect(warning, SIGNAL(clicked()), this, SLOT(slotWarning()));
    connect(critical, SIGNAL(clicked()), this, SLOT(slotCritical()));
    connect(abort, SIGNAL(clicked()), this, SLOT(slotAbout()));
    connect(aqt, SIGNAL(clicked()), this, SLOT(slotAboutQt()));
    connect(custom, SIGNAL(clicked()), this, SLOT(slotCustom()));
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::slotQuestion()
{
    switch(QMessageBox::question(this,"问题",
                                 tr("文档结束,从头搜索?"),
                                 QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
    {
    case QMessageBox::Ok:
        label->setText("OK");
        break;
    case QMessageBox::Cancel:
        label->setText("Cancel");
        break;
    default:
        break;
    }
    return;
}
void Dialog::slotInformation()
{
    QMessageBox::information(this, "Information", tr("anything you want tell user"));
    return;
}
void Dialog::slotWarning()
{
    switch(QMessageBox::warning(this,"Warning",
           tr("保存否"),
           QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,
           QMessageBox::Save))
    {
    case QMessageBox::Save:
        label->setText("save");
        break;
    case QMessageBox::Discard:
        label->setText("Discard");
        break;
    case QMessageBox::Cancel:
        label->setText("Cancel");
        break;
    default:
        break;
    }
    return;
}
void Dialog::slotCritical()
{
    QMessageBox::critical(this,"information",tr("tell usr a critical error"));
    label->setText("Critical MessageBox");
    return;
}
void Dialog::slotAbout()
{
    QMessageBox::about(this,"About",tr("Message box example"));
    label->setText("About MessageBox");
    return;
}
void Dialog::slotAboutQt()
{
    QMessageBox::aboutQt(this,"About Qt");
    label->setText("About Qt MessageBox");
    return;
}
void Dialog::slotCustom()
{
    QMessageBox customMsgBox;
    customMsgBox.setWindowTitle("custom message box");
    QPushButton *lockButton = customMsgBox.addButton(tr("lock"),QMessageBox::ActionRole);
    QPushButton *unlockButton = customMsgBox.addButton(tr("Unlock"),QMessageBox::ActionRole);
    QPushButton *cancelButton = customMsgBox.addButton(QMessageBox::Cancel);
    customMsgBox.setIconPixmap(QPixmap("G:/UI/images/fish.png"));
    customMsgBox.setText("用户自定义类型");
    customMsgBox.exec();
    if(customMsgBox.clickedButton()==lockButton)
        label->setText("Custom MessageBox/lock");
    if(customMsgBox.clickedButton()==unlockButton)
        label->setText("Custom MessageBox/unlock");
    if(customMsgBox.clickedButton()==cancelButton)
        label->setText("cancel");
    return;
}


main.cpp
#include <QtGui/QApplication>
#include "dialog.h"
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QApplication a(argc, argv);
    Dialog w;
    w.show();
    return a.exec();
}


 
  
实例6.QQ
drawer.h
#ifndef DRAWER_H
#define DRAWER_H
#include <QToolBox>
#include <QToolButton>
class Drawer : public QToolBox
{
    Q_OBJECT
public:
    Drawer(QWidget *parent = 0);
    QToolButton *toolButton1_1;
    QToolButton *toolButton1_2;
    QToolButton *toolButton1_3;
    QToolButton *toolButton1_4;
    QToolButton *toolButton1_5;
    QToolButton *toolButton2_1;
    QToolButton *toolButton2_2;
    QToolButton *toolButton3_1;
    QToolButton *toolButton3_2;
private:
    QToolButton * initToolButton(const QString &sText, const QString &sIconFile);
};
#endif // DRAWER_H


drawer.cpp
#include "drawer.h"
#include <QtGui>
#include <QGroupBox>
Drawer::Drawer(QWidget *parent) :
    QToolBox(parent)
{
    setWindowTitle(tr("Qing"));
    QGroupBox *groupBox1 = new QGroupBox;
    QGroupBox *groupBox2 = new QGroupBox;
    QGroupBox *groupBox3 = new QGroupBox;
    toolButton1_1 = initToolButton(tr("z"),QString("G:/UI/images/face.png"));
    toolButton1_2 = initToolButton(tr("a"),QString("G:/UI/images/face.png"));
    toolButton1_3 = initToolButton(tr("b"),QString("G:/UI/images/face.png"));
    toolButton1_4 = initToolButton(tr("c"),QString("G:/UI/images/face.png"));
    toolButton1_5 = initToolButton(tr("d"),QString("G:/UI/images/face.png"));
    toolButton2_1 = initToolButton(tr("e"),QString("G:/UI/images/face.png"));
    toolButton2_2 = initToolButton(tr("雨舟"),QString("G:/UI/images/cat.png"));
    toolButton3_1 = initToolButton(tr("f"),QString("G:/UI/images/face.png"));
    toolButton3_2 = initToolButton(tr("g"),QString("G:/UI/images/face.png"));
    QVBoxLayout *layout1 = new QVBoxLayout(groupBox1);
    layout1->setMargin(10);
    layout1->setAlignment(Qt::AlignHCenter);
    layout1->addWidget(toolButton1_1);
    layout1->addWidget(toolButton1_2);
    layout1->addWidget(toolButton1_3);
    layout1->addWidget(toolButton1_4);
    layout1->addWidget(toolButton1_5);
    QVBoxLayout *layout2 = new QVBoxLayout(groupBox2);
    layout2->setMargin(10);
    layout2->setAlignment(Qt::AlignHCenter);
    layout2->addWidget(toolButton2_1);
    layout2->addWidget(toolButton2_2);
    layout2->addStretch();
    QVBoxLayout *layout3 = new QVBoxLayout(groupBox3);
    layout3->setMargin(10);
    layout3->setAlignment(Qt::AlignHCenter);
    layout3->addWidget(toolButton3_1);
    layout3->addWidget(toolButton3_2);
    layout3->addStretch();
    this->addItem((QWidget*)groupBox1,tr("friend"));
    this->addItem((QWidget*)groupBox2,tr("…^^…"));
    this->addItem((QWidget*)groupBox3,tr("tea"));
}
QToolButton * Drawer::initToolButton(const QString &sText, const QString &sIconFile)
{
    QToolButton *ptb = new QToolButton;
    ptb->setText(sText);
    ptb->setIcon(QPixmap(sIconFile));
    ptb->setIconSize(QSize(72,72));
    ptb->setAutoRaise(TRUE);
    ptb->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    return ptb;
}


main.cpp
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。
#include "drawer.h" // 自定义类头文件
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QApplication app(argc, argv);
    Drawer *drawer = new Drawer();
    drawer->show();
    return app.exec();
 }


 
   
实例7.表格的使用
table.h
#ifndef TABLE_H
#define TABLE_H
#include <QtGui> // 包含了QT基本头文件和GUI头文件。GUI:图形用户界面。
class Table : public QTableWidget
{
    Q_OBJECT
public:
    enum Sex{Male, Female};
    enum Work{Worker, Farmer, Docter, Lawyer, Soldier, Teacher};
public:
    Table();
    ~Table();
private:
    void setRowData(int row, Table::Sex sex, QString name, Table::Work work, int income=0); // 设置一行数据
};
#endif // TABLE_H


table.cpp
#include "table.h"
Table::Table():QTableWidget()
{
    setWindowTitle(tr("Qing")); // 设置窗口标题
    setColumnCount(5); // 设置表格控件列大小
    setRowCount(6); // 设置表格控件行的大小
    QStringList strList;
    strList << tr("Sex") << tr("Name") << tr("Birthday") << tr("Work") << tr("Income") ;
    setHorizontalHeaderLabels(strList); // 设置表格控件,列表头内容
    setRowData(0, Table::Male, tr("LiXiujie"), Table::Worker, 5500);
    setRowData(1, Table::Female, tr("WanZhenjie"), Table::Worker, 2000);
    setRowData(2, Table::Male, tr("LiSi"), Table::Soldier, 1500);
    setRowData(3, Table::Male, tr("ZhangSan"), Table::Teacher, 4500);
    setRowData(4, Table::Female, tr("WangWu"), Table::Docter, 5500);
    setRowData(5, Table::Female, tr("Wendy"), Table::Lawyer, 4000);
    resize(510, 210);
}
Table::~Table()
{
}
void Table::setRowData(int row, Table::Sex sex, QString name, Table::Work work, int income)
{
    QLabel *pLableSex = new QLabel(); // 标签控件
    if (0 == sex)
    {
        pLableSex->setPixmap(QPixmap("G:/UI/images/fish.png")); // 设置标签控件的图形属性
    }
    else
    {
        pLableSex->setPixmap(QPixmap("G:/UI/images/qq.gif")); // 设置标签控件的图形属性
    }
    setCellWidget(row, 0, pLableSex); // 添加控件到表格的单元格
    setColumnWidth(0, 48);
    QTableWidgetItem *pTWItem = new QTableWidgetItem(name);
    setItem(row, 1, pTWItem);
    QDateTimeEdit *pDTE= new QDateTimeEdit(); // 日期时间控件
    pDTE->setDateTime(QDateTime::currentDateTime()); // 设置日期时间控件的值为当前时间
    pDTE->setDisplayFormat("yyyy-MM-dd"); // 设置显示样式为“年-月-日”
    pDTE->setCalendarPopup(true); // 设置是否弹出日历编辑器
    setCellWidget (row, 2, pDTE);
    setColumnWidth(2, 120);
    QComboBox *pCB = new QComboBox(); // 下拉选择框控件
    pCB->addItem(tr("Worker"));
    pCB->addItem(tr("Farmer"));
    pCB->addItem(tr("Doctor"));
    pCB->addItem(tr("Lawyer"));
    pCB->addItem(tr("Soldier"));
    pCB->addItem(tr("Teacher"));
    pCB->setCurrentIndex(work); // 设置选中项
    setCellWidget(row, 3, pCB);
    QSpinBox *pSB = new QSpinBox(); // 数字上下增减框
    pSB->setMaximum(20000);
    pSB->setValue(income);
    setCellWidget(row, 4, pSB);
}


main.cpp
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。
#include "Table.h" // 自定义类头文件
int main(int argc, char *argv[])
{
QApplication::addLibraryPath("plugins");
QApplication app(argc, argv);
Table *table = new Table();
table->show();
return app.exec();
}
 
   
 
  
 
  
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值