赞
踩
标准对话框样式
内置对话框基类
- QColorDialog,
- QErrorMessage
- QFileDialog
- QFontDialog
- QInputDialog
- QMessageBox
- QProgressDialog
QDialog Class帮助文档
示例:各按钮激发对话框实现基类提供的各效果
第一步:实现组件布局()
第二步:实现信号与槽函数
文件静态成员方法
打印实现使用qdebug
代码:
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include <QWidget>
- #include <QPushButton>
- #include <QTextEdit>
-
- #include<QColorDialog>
- #include<QErrorMessage>
- #include<QFileDialog>
- #include<QFontDialog>
- #include<QInputDialog>
- #include<QMessageBox>
- #include<QProgressDialog>
-
- #include <QDebug>
-
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
- public slots:
- void setcolorf()
- {
- QColor c = QColorDialog::getColor();
- te->setTextColor(c);
- }
- void showerr()
- {
- QErrorMessage *msg = QErrorMessage::qtHandler();
- msg->showMessage("EEEEEEEE");
- }
-
- void getfile()
- {
- QString filename = QFileDialog::getOpenFileName();
-
- qDebug()<<filename; //qt中打印方法
- te->setText(filename);
- }
-
- void setfont()
- {
- bool ok;
- QFont myfont = QFontDialog::getFont(&ok);
- if(ok)
- te->setFont(myfont);
- }
-
- void getstr()
- {
- QString str = QInputDialog::getText(this, "xxxx","yyyyy");
- te->setText(str);
-
- }
-
- void showmsg()
- {
- QMessageBox::information(this, "vvvv", "hello", "AAA");
- }
-
- void showprogress()
- {
- QProgressDialog p;
- p.setValue(50);
- p.exec();
-
- }
-
- private:
- QPushButton *btcolor;
- QPushButton *bterrm;
- QPushButton *btfile;
- QPushButton *btfont;
- QPushButton *btinput;
- QPushButton *btmsg;
- QPushButton *btprg;
-
- QTextEdit *te;
-
- };
-
- #endif // WIDGET_H
- #include "widget.h"
- #include "QVBoxLayout"
- #include "QHBoxLayout"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- {
- btcolor = new QPushButton("setcolor");
- bterrm = new QPushButton("errmsg");
- btfile = new QPushButton("getfile");
- btfont = new QPushButton("setfont");
- btinput = new QPushButton("getstr");
- btmsg = new QPushButton("msg");
- btprg = new QPushButton("progress");
-
- te = new QTextEdit;
-
- QVBoxLayout *vbox = new QVBoxLayout;
- vbox->addWidget(btcolor);
- vbox->addWidget(bterrm);
- vbox->addWidget(btfile);
- vbox->addWidget(btfont);
- vbox->addWidget(btinput);
- vbox->addWidget(btmsg);
- vbox->addWidget(btprg);
-
- QHBoxLayout *mainbox = new QHBoxLayout;
- mainbox->addLayout(vbox);
- mainbox->addWidget(te);
- this->setLayout(mainbox);
-
- connect(btcolor, SIGNAL(clicked(bool)), this, SLOT(setcolorf()));
- connect(bterrm, SIGNAL(clicked(bool)), this, SLOT(showerr()));
- connect(btfile, SIGNAL(clicked(bool)), this, SLOT(getfile()));
- connect(btfont, SIGNAL(clicked(bool)), this, SLOT(setfont()));
- connect(btinput, SIGNAL(clicked(bool)), this, SLOT(getstr()));
- connect(btmsg, SIGNAL(clicked(bool)), this, SLOT(showmsg()));
- connect(btprg, SIGNAL(clicked(bool)), this, SLOT(showprogress()));
-
-
- }
-
- Widget::~Widget()
- {
-
- }
现象:模态显示,前面不关后面不关,小框可以卡其后面的态
有时候对于弹出对话框可以点确定关闭,可以点X全部关闭,那么这时候需要实现自定义对话框
添加新文件,添加C++
文件添加 姓名,基类
生成myQdialog的cpp和.h文件,需要用到信号与槽,Q_OBJEC
myqdialog.h
- #ifndef MYQDIALOG_H
- #define MYQDIALOG_H
-
- #include <QDialog>
- #include <QLineEdit>
- #include <QPushButton>
-
- class myQDialog : public QDialog
- {
- Q_OBJECT
- public:
- myQDialog();
-
- public slots:
- void ok_pushed()
- {
- stat = true;
- close();
- }
-
- public:
- static int getstat()
- {
- myQDialog a;
- a.exec();
-
- return a.stat;
- }
-
- private:
- QLineEdit *le;
- QPushButton *pb;
-
- int stat;
- };
-
- #endif // MYQDIALOG_H
myqdialog.cpp
- #include "myqdialog.h"
- #include <QVBoxLayout>
-
- myQDialog::myQDialog()
- {
- le = new QLineEdit("aaaaaa");
- pb = new QPushButton("OK");
-
- QVBoxLayout *vbox = new QVBoxLayout;
- vbox->addWidget(le);
- vbox->addWidget(pb);
-
- setLayout(vbox);
-
- stat = false;
- connect(pb, SIGNAL(clicked(bool)), this, SLOT(ok_pushed()));
- }
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include <QWidget>
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
- };
-
- #endif // WIDGET_H
widget.cpp
- #include "widget.h"
- #include <QWidget>
- #include <QDialog>
- #include "myqdialog.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- {
- #if 0
- myQDialog a;
- a.setFixedSize(100, 100);
- a.exec();
-
- if(!a.stat)
- exit(0);
-
- #endif
-
- int s = myQDialog::getstat();
-
- if(!s)
- exit(0);
- }
-
- Widget::~Widget()
- {
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。