首页 > 代码库 > 学习Qt,Getting started
学习Qt,Getting started
在界面的设计中,现在用的比较多的是Qt和WPF(C#),以前的MFC已出现衰老趋势。本人最近在学习Qt,觉得很有用,遂决定将学习历程记录下来,或许有感于后之来者,不亦乐哉。
一、Hello Qt
#include "try_qt.h" #include <QtGui/QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); }
QApplication app(argc, argv);创建一个QApplication的对象app,管理程序的资源。
QLabel *label = new QLabel("Hello Qt!");创建一个QLabel的widget,用于显示括号的内容。
label->show();使label的内容显示。
return app.exec();退出Qt,操作系统对资源进行重新分配。
二、QPushButton
#include "try_qt.h" #include <QtGui/QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit())); button->show(); return app.exec(); }
Qt的widgets发出信号,表示用户的行为后者状态的改变。当用户点击button时,QPushButton会发出clicked()信号。一个信号可以和一个函数关联起来,当一个信号被发送时,其对应的slot自动执行。
QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));当用户点击button时,QPushButton会发出clicked()信号,导致其关联的quit()函数自动执行。
三、widgets布局
#include "try_qt.h" #include <QtGui/QApplication> #include <QHBoxLayout> #include <qslider> #include <qspinbox> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget *window = new QWidget; window->setWindowTitle("Enter your age"); QSpinBox *spinBox = new QSpinBox; QSlider *slider = new QSlider(Qt::Horizontal); spinBox->setRange(0,130); slider->setRange(0,130); QObject::connect(spinBox,SIGNAL(valueChanged(int)), slider,SLOT(setValue(int))); QObject::connect(slider,SIGNAL(valueChanged(int)), spinBox,SLOT(setValue(int))); spinBox->setValue(35); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(spinBox); layout->addWidget(slider); window->setLayout(layout); window->show(); return app.exec(); }该程序由三个widgets组成,分别是QSpinBox,QSlider和QWidget。QWidget是程序的主窗口,子窗口是QSpinBox和QSlider。
<span style="white-space:pre"> </span>QWidget *window = new QWidget; window->setWindowTitle("Enter your age");建立QWidget作为程序的主窗口,调用setWindowTitle()设置主窗口的名称。
QSpinBox *spinBox = new QSpinBox; QSlider *slider = new QSlider(Qt::Horizontal); spinBox->setRange(0,130); slider->setRange(0,130);创建QSpinBox和QSlider,并设置他们的有效范围
<pre name="code" class="cpp"> QObject::connect(spinBox,SIGNAL(valueChanged(int)), slider,SLOT(setValue(int))); QObject::connect(slider,SIGNAL(valueChanged(int)), spinBox,SLOT(setValue(int)));确保spin-box和slider是同步的,不管是信号valueChanged(int)发出还是setValue(int)对slot的值进行设置,他们的值都是一样的。
spinBox->setValue(35);设置spinBox的值为35。
QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(spinBox); layout->addWidget(slider); window->setLayout(layout);
使用布局管理器layout,布局spinBox和slider。调用QWidget::setLayout将布局管理器安装在窗口上。
学习Qt,Getting started
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。