在界面的设计中,现在用的比较多的是Qt和WPF(C#),以前的MFC已出现衰老趋势。本人最近在学习Qt,觉得很有用,遂决定将学习历程记录下来,或许有感于后之来者,不亦乐哉。

一、Hello Qt

  1. #include "try_qt.h"
  2. #include <QtGui/QApplication>
  3. #include <QLabel>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication app(argc, argv);
  8. QLabel *label = new QLabel("Hello Qt!");
  9. label->show();
  10. return app.exec();
  11. }
  1. QApplication app(argc, argv);

创建一个QApplication的对象app,管理程序的资源。

  1. QLabel *label = new QLabel("Hello Qt!");

创建一个QLabel的widget,用于显示括号的内容。

  1. label->show();

使label的内容显示。

  1. return app.exec();

退出Qt,操作系统对资源进行重新分配。

二、QPushButton

  1. #include "try_qt.h"
  2. #include <QtGui/QApplication>
  3. #include <QPushButton>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication app(argc, argv);
  8. QPushButton *button = new QPushButton("Quit");
  9. QObject::connect(button, SIGNAL(clicked()),
  10. &app, SLOT(quit()));
  11. button->show();
  12. return app.exec();
  13. }

Qt的widgets发出信号,表示用户的行为后者状态的改变。当用户点击button时,QPushButton会发出clicked()信号。一个信号可以和一个函数关联起来,当一个信号被发送时,其对应的slot自动执行。

  1. QObject::connect(button, SIGNAL(clicked()),
  2. &app, SLOT(quit()));

当用户点击button时,QPushButton会发出clicked()信号,导致其关联的quit()函数自动执行。

三、widgets布局

  1. #include "try_qt.h"
  2. #include <QtGui/QApplication>
  3. #include <QHBoxLayout>
  4. #include <qslider>
  5. #include <qspinbox>
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. QApplication app(argc, argv);
  10.  
  11. QWidget *window = new QWidget;
  12. window->setWindowTitle("Enter your age");
  13.  
  14. QSpinBox *spinBox = new QSpinBox;
  15. QSlider *slider = new QSlider(Qt::Horizontal);
  16. spinBox->setRange(0,130);
  17. slider->setRange(0,130);
  18.  
  19. QObject::connect(spinBox,SIGNAL(valueChanged(int)),
  20. slider,SLOT(setValue(int)));
  21. QObject::connect(slider,SIGNAL(valueChanged(int)),
  22. spinBox,SLOT(setValue(int)));
  23. spinBox->setValue(35);
  24.  
  25. QHBoxLayout *layout = new QHBoxLayout;
  26. layout->addWidget(spinBox);
  27. layout->addWidget(slider);
  28. window->setLayout(layout);
  29.  
  30. window->show();
  31.  
  32. return app.exec();
  33. }

该程序由三个widgets组成,分别是QSpinBox,QSlider和QWidget。QWidget是程序的主窗口,子窗口是QSpinBox和QSlider。

  1. <span style="white-space:pre"> </span>QWidget *window = new QWidget;
  2. window->setWindowTitle("Enter your age");

建立QWidget作为程序的主窗口,调用setWindowTitle()设置主窗口的名称。

  1. QSpinBox *spinBox = new QSpinBox;
  2. QSlider *slider = new QSlider(Qt::Horizontal);
  3. spinBox->setRange(0,130);
  4. slider->setRange(0,130);

创建QSpinBox和QSlider,并设置他们的有效范围

  1. <pre name="code" class="cpp"> QObject::connect(spinBox,SIGNAL(valueChanged(int)),
  2. slider,SLOT(setValue(int)));
  3. QObject::connect(slider,SIGNAL(valueChanged(int)),
  4. spinBox,SLOT(setValue(int)));

确保spin-box和slider是同步的,不管是信号valueChanged(int)发出还是setValue(int)对slot的值进行设置,他们的值都是一样的。

  1.  
  1. spinBox->setValue(35);

设置spinBox的值为35。

  1. QHBoxLayout *layout = new QHBoxLayout;
  2. layout->addWidget(spinBox);
  3. layout->addWidget(slider);
  4. window->setLayout(layout);
使用布局管理器layout,布局spinBox和slider。调用QWidget::setLayout将布局管理器安装在窗口上。

学习Qt,Getting started的更多相关文章

  1. Qt入门学习——Qt 5 帮助文档的使用

    Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必 ...

  2. Qt_为什么学习Qt

    1)学习GUI编程,市场上任何一款产品几乎都带有图形界面,市场上很火的Androoid.IOS编程无非也是GUI app编程,GUI编程都是差不多的,学习Qt后再学习ANdroid IOS ,那都是S ...

  3. 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)

    作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...

  4. 是否应该学习qt源码(碰到问题的时候,或者文档对函数描述不清楚的时候,可以看一下)

    是否应该学习qt源码 如果你想调用某个函数,但是文档并没有清晰描述这个函数的功能的时候,你就需要去阅读源码,看看Qt究竟是怎么实现的.比如用QNetworkAccessManager发送一个QHttp ...

  5. 学习Qt的资源-网站、论坛、博客等

    来自<零基础学Qt 4编程>一书的附录 附录C Qt资源 C.1 Qt 官方资源 全球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程 ...

  6. 学习 Qt 编程的好书精品推荐!

    最近一段时间,准备开始搞Qt方面的东西,想找几本书看看.网上介绍QT的书籍也有很多,不想浪费时间,所以想找几本精品的书籍来看.花了半天的时间找了几本非常不错的,这里面整理好之后推荐给大家! 下面介绍的 ...

  7. 学习Qt的一点小感想

    作为一名电子信息工程的学生,嵌入式似乎是不二的选择,然后我便学习了一下在嵌入式广泛应用的QT软件,刚开始就是学学控件,觉得还是简单,也觉得比较新颖,可是到了做一些具体的小东西就会发现学的东西远远不够, ...

  8. 初学习Qt的一些感悟

    最近用Qt写了个人项目,有如下心得(可能有不准确): Qt尽管没有扩展C++语法,但是有额外编译链,每个Q_OBJECT类编译的时候会用moc工具生成另一个meta C++类,之后就是标准C++编译流 ...

  9. 学习QT——GUI的基础用法(2)

    1.listWidget列表 在构造函数里面添加: ; i<; i++) { ui->listWidget->addItem(QString::number(i)+"ite ...

随机推荐

  1. 集合框架之Collection接口

    Collection 层次结构中的根接口.Collection表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 coll ...

  2. Windows上C语言实现设置控制台的颜色

    这里设置只要调用system();这个函数就行了,参数是字符串,想要设置终端的颜色,按照以下格式可以设置: //数字表示前景色,字母表示背景色 //color 0=黑色 1蓝色 2 绿色 3湖蓝色 4 ...

  3. Dalvik虚拟机

    Dalvik虚拟机是google专门为android平台开发的一个java虚拟机,但它并没有使用JVM规范.Dalvik虚拟机主要完成对象生命周期的管理.线程管理.安全和异常管理以及垃圾回收等重要功能 ...

  4. linux iio子系统

    //============================================================================\\ || 系            统:W ...

  5. Hessian源码分析--HessianProxy

    在上一篇博客 Hessian源码分析--HessianProxyFactory 中我们了解到,客户端获得的对象其实是HessianProxy生成的目标对象,当调用目标对象的方法时,会调用Hessian ...

  6. div效果很好的遮盖层效果

    [html] view plaincopyprint? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  7. Android初级教程小案例之单选框RadioGroup与复选框CheckBox

    Android里面的单选框和html中的其实是一样的效果.这里用到两个控件:CheckBox和RadioGroup.直接上代码: radio.xml布局文件: <?xml version=&qu ...

  8. HMM:隐马尔可夫模型HMM

    http://blog.csdn.net/pipisorry/article/details/50722178 隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模 ...

  9. 通过一个工具类更深入理解动态代理和Threadlocal

    动态代理和Threadlocal 一个代理类返回指定的接口,将方法调用指定的调用处理程序的代理类的实例.返回的是一个代理类,由指定的类装载器的定义和实现指定接口指定代理实例调用处理程序最近用到一个工具 ...

  10. Mybatis源码之Statement处理器CallableStatementHandler(六)

    CallableStatementHandler实际就是使用CallableStatement来执行SQL语句,当然它执行的是存储过程. 源码如下: /** * @author Clinton Beg ...