实例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(); }