#include "widget.h"
#include
#include 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()
{}
#ifndef WIDGET_H
#define WIDGET_H#include
#include
#include
#include
#include
#include
#include
#include#include
#include
#include class Widget : public QWidget
{Q_OBJECTpublic: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()<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
对话框就是Dialog,新建工程建成widget了,他就像那种不点关闭或者OK就一直在屏幕上的那种东西。
效果像下面这样
我们点击getfile就会弹出这个文件夹选择一个文件
点击一个文件
点击OK就会把信息显示在对话框里
我们随便选择一段话setcolor
点击setfont可以设置大小字体什么的
点击getstr写进一个字符串就会显示在文本框中
msg
errmsg
progress
#include "widget.h"
#include
#include
Widget::Widget(QWidget *parent): QWidget(parent)
{QWidget a;a.show();
}Widget::~Widget()
{}
用widget的话一闪而过;
在dialog中有一个特殊方法
会先弹出一个框框叉掉以后再弹出第二个框框
我们想要自定义一个对话框叫mydialog右键我们的工程文件夹
他会为我们生成一个简单的框架我们简单完善一下就可以使用了。
Q_OBJECT是Qt中的一个宏。由于Qt的语法是在c++的基础上拓展的,所以在Qt程序的编译过程中,直接用gcc这些标准编译器编译是不可行的,因为gcc不能识别这些拓展性的语法,比如信号和槽(Signal and Slot)。于是Qt引入了moc这一编译器。
moc(Meta-Object Compiler),即元对象编译器,Qt 程序在交由标准编译器编译之前,会使用 moc 分析 C++ 源文件,假设它发现某个头文件中包括了 Q_OBJECT这个宏(注意, moc 只处理头文件中标记了Q_OBJECT的类声明,不会处理 cpp 文件中的类似声明),则会生成另外一个 C++ 源文件,这个源文件里包括了 Q_OBJECT 宏的实现代码,并且文件名称将会是原文件名称前面加上 moc_ 。这个新的文件会和原本的c++源文件一起进入编译系统,最终被链接到二进制代码中完成编译工作。
在Qt中,QObject是所有Qt类的基类,是Qt对象模型的核心,只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。凡是QObject类(不管是直接子类还是间接子类),都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽,都应该添加这个宏。这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力。因此,如果你觉得你的类不需要使用信号槽,就不添加这个宏,这是错误的,因为其它很多操作都会依赖于这个宏。
————————————————
版权声明:本文为CSDN博主「LIEYz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_18998145/article/details/117324209
下面实现一个功能,点OK出现后面的框,点XX结束
#ifndef MYDIALOG_H
#define MYDIALOG_H#include
#include
#include 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 // MYDIALOG_H
#include "mydialog.h"
#include 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()));
}
#include "widget.h"
#include
#include
#include "mydialog.h"Widget::Widget(QWidget *parent): QWidget(parent)
{
#if 0myQDialog a;a.setFixedSize(100, 100);a.exec();if(!a.stat)exit(0);#endifint s = myQDialog::getstat();if(!s)exit(0);
}Widget::~Widget()
{}
这样就实现了一个简单的登录界面
现在什么都实现不了,就只是点OK出现后面的框框
加点东西简单实现的账号密码登录
源码再我的资源里欢迎下载
下一篇:1、测试用例通用模板