#include <qapplication.h> #include <qwidget.h> class MyMainWindow : public QWidget { public: MyMainWindow(); }; MyMainWindow::MyMainWindow() { setMinimumSize(400,300); setMaximumSize(800,600); } int main(int argc,char **argv) { QApplication a(argc,argv); MyMainWindow w; a.setMainWidget(&w); w.show(); return a.exec(); }
|
上边是一个qt入门程序,qt程序的基本框架是这样的:
int main(int argc,char **argv) { QApplication a(argc,argv); }
|
首先接受argc argv然后将参数传递到qapplication的对象 a中,这样就开始了qt部分,在qt编程中,常用部件来说明一个类,一个部件就是一个类的对象,而其他的部件或者类的对象可以放置在这个付部件中,a.setMainWidget(&w);将w和a关联起来,这样可以理解为w是部件a中的部件。
那么怎么在部件中放置其他的部件?
#include <qapplication.h> #include <qwidget.h> #include <qfont.h> #include <qpushbutton.h>//button部件类 #include <qlable.h> //label部件类
class MyMainWindow : public QWidget { public: MyMainWindow(); QPushButton *b1;//同理,如果要添加其他的部件,只要申明类型的指针 QLabel *label;//在构造函数中申请控制初始化就可以了。 }; MyMainWindow::MyMainWindow() { b1=new QPushButton("button",this);//这里存在一个常犯的错误, b1->setGeometry(20,20,160,80);//如果不是开辟空间,而是之间的定义类的对象 b1->setFont(QFont("Times",18,QFont::Bold));//参照对象的作用域 label=new QLabel(this);//会在花括号结构后释放,而发生错误 label->setGeometry(20,110,180,80);//推荐按照这里的方式进行空间开辟 label->setText("this is a label "); label->setAlignment(AlignCenter);//需要注意这里的this指针 setMinimumSize(400,300);//通过this指针,制定子部件的父部件 setMaximumSize(800,600); } int main(int argc,char **argv) { QApplication a(argc,argv); MyMainWindow w; a.setMainWidget(&w); w.show();//部件初始化后,需要.show()才能在界面显示 return a.exec(); }
|
最简单的信号与槽演示:
MyMainWindow::MyMainWindow() { b1=new QPushButton("button",this); b1->setGeometry(20,20,160,80); b1->setFont(QFont("Times",18,QFont::Bold)); label=new QLabel(this); label->setGeometry(20,110,180,80); label->setText("this is a label "); label->setAlignment(AlignCenter); setMinimumSize(400,300); setMaximumSize(800,600); connect(b1,SIGNAL(clicked()),qApp,SLOT( quit() )); }
|
只要在MyMainWindow的构造函数总加入信号与槽的链接函数就可以通过点击按钮推出程序,
这里需要注意的是qApp,他是一个内部指针,指向QApplication a,qt中最为重要的概念之一就是信号与槽,在部件通信、数据交换等操作中,起到非常重要的作用。
阅读(2046) | 评论(0) | 转发(0) |