Qt Programing With C++ (2nd) 之 age
来源:互联网 发布:coreldraw mac 编辑:程序博客网 时间:2024/06/08 15:42
#include <QApplication>#include <QHBoxLayout>#include <QSpinBox>#include <QSlider>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();}
QApplication是一个负责GUI程序的控制流程和主要设置的类,对于任何UI程序来说,有且只能有一个QApplication对象;当然对于没有UI的Qt程序来说,应该使用QCoreApplication。因为只有一个QApplication,为了方便访问这个类的唯一对象,定义了一个宏qApp,源码中这样定义的
static_cast<QApplication *>(QCoreApplication::instance())
Qt是事件驱动的,QApplication通过sendEvent()和postEvent()来把所有接受到的事件分发给目标窗口
QWidget 是所有用户交互窗口对象的基类,它从窗口系统中接受鼠标,键盘和其他事件,并且重绘自己。可以通过选择合适的 window flag来创建不同类型的window(a widiget that is not emedded in a parent widget is called a window)。
QWidget提供了很多成员函数,但是这其中有很多函数没有实际功能(虚函数),这些函数的具体功能是由继承类具体实现的。
在Qt中,对于Widget对象分为两类,一是Top-Level Widget(window), 另外一类是Non-Window(Child),它们是根据是否有父窗口来决定的(例外,如果即使有窗口,如果显示设置window flag的话也可以变为window)
QObject是所有Qt对象的基类,也是整个Qt框架的核心。Qt的核心机制就是一种成为“信号与槽”的对象间的通讯。QObject以树的形式组织自己以及和自己相关的对象,我们可以通过名称来查找对象。
对于信号与槽机制,这篇文章给了较完整的叙述http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/
上面那篇文章里没有提到Auto Connection相关的事情:Qt的元对象系统提供了一种自动匹配QObject子类之间信号和槽的自动connect.
void QMetaObject::connectSlotsByName ( QObject * object ) [static]
该函数会递归的搜索传入对象object的所有子对象,并对按照下列规则定义的信号和槽进行自动连接 void on_<object name>_<signal name>(<signal parameters>);
假设我们有个对象拥有一个子控件button1, 对于button1的clicked()的信号,on_button1_clicked()槽会被自动connect
void on_button1_clicked();
关于什么是元对象以及moc:http://www.thisisqt.com/forum/viewthread.php?tid=48
- Qt Programing With C++ (2nd) 之 age
- Qt Programing With C++ (2nd) 之 find dialog
- Programing with QT+CGAL+VTK
- OO Programing in C (2)
- C programing
- qt 信号,槽及反射机制的实现原理 (记录 gui programing with qt 4)
- Windows 10 Development with XAML and C 7, 2nd Edition.pdf 2017 英文原版 免费下载
- Designing with Web Standards (2nd Edition)
- OO Programing in C
- programing c: styles
- C Programing Lanuage Notes
- Programming Embedded Systems with C and GNU Development Tools, 2nd Edition (OReilly, 2006)的读书终于完成
- QT学习笔记之一 Age
- C For Dummies, 2nd Edition
- BestCoder 2nd Anniversary C.Wool
- ATL Internals: Working with ATL 8 (2nd Edition) DOWNLOAD
- Pragmatic.Bookshelf.Agile.Web.Development.with.Rails.2nd.Edition
- ATL Internals: Working with ATL 8 (2nd Edition)
- Qt Resource Reference
- Android自由选择TextView的文字
- Apache开启SSI配置以及针对shtml开启apache相关设置
- PreferenceActivity用法简介
- ThinkPHP静态缓存简单配置和使用
- Qt Programing With C++ (2nd) 之 age
- c/c++ 中毫无意义的 i+++++i
- php教程
- HTML 服务器控件
- Web 服务器控件
- 杂货店
- Validation 服务器控件
- Servlet+Tomcat制作出第一个运行在Tomcat上的java应用程序
- JAVA中常用IO流类:BufferedReader和BufferedWriter