摘要: 在QT编程中,如果遇到多个控件,但是他们的槽大致相同,这个该怎么处理,比如10个button,难道要写10个槽,可以不必这样,QSignalMapper可以帮组我们解决。 QSignalMapper *signalMapper = new QSignalMapper(this); for (i = 0; i < 10; i++) { button = new QPushButton(QObject::tr(buttonName)); signalMapper->set 阅读全文
posted @ 2011-11-21 16:28 移动应用开发 阅读(199) 评论(0) 推荐(0)
摘要: 信号和槽是QT的核心,在其他GUI中大多采用消息和回调函数,比如win32中#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton button("Quit"); button.show(); QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit())); return app.exe 阅读全文
posted @ 2011-11-21 15:48 移动应用开发 阅读(276) 评论(0) 推荐(0)
摘要: 使用new操作符来定义一个对象QVBoxLayout *layout = new QVBoxLayout(&window);另外一种方法QVBoxLayout layout(&window);C++并没有提供内存自动管理机制,通常,需要程序开发人员自己去做这些事情,比如在构造函数中使用了new去申请了一个对象,那么在析构函数中就要显示的调用delete去删除这个对象。但是QT提供了它自己的内存管理,QT的类构造函数都会有个parent参数,用于指明它的父对象,QT提供了这样的机制,当父对象调用delete时,QT会自动的delete所有的子对象。所以在使用new操作符去申请对象 阅读全文
posted @ 2011-11-21 15:42 移动应用开发 阅读(292) 评论(0) 推荐(0)
摘要: 关于布局,布局可以采用绝对定位和布局定位,绝对定位就是直接给出坐标值,但是如果用户改变了窗口大小,比如最大化,如果你自己不做处理,那么窗口上面的这些控件还是在原来位置,并不能随着窗口变化而变化。QT提供了布局管理器,可以避免这种问题出现,常用的有水平布局,垂直布局,网格布局在布局管理器中使用addWidget添加一个控件,使用addLayout添加一个子布局1.水平布局#include <QApplication>#include <QPushButton>#include <QHBoxLayout>int main(int argc, char *argv 阅读全文
posted @ 2011-11-21 15:38 移动应用开发 阅读(327) 评论(0) 推荐(0)
摘要: 为了是我们的QT程序支持如中文等其他语言,通常的做法是在需要翻译的地方显示的用tr标记,所以你在阅读其他人编写的源程序时会看到很多字符串做了tr标记,这样做是有原因的。1.在hello.pro文件中增加TRANSLATIONS = hello_zh_CN.ts2.进入工程目录,运行lupdate hello.pro,生成hello_zh_CN.ts文件3.使用Qt Creator打开这个文件(或者直接用vi或gedit打开都可以),对翻译部分进行翻译,比如<source>hello!</source><translation type="unfinish 阅读全文
posted @ 2011-11-21 15:26 移动应用开发 阅读(185) 评论(0) 推荐(0)
摘要: qt学习第一个程序hello world!新建一个空的工程hello,然后新建一个文件main.cpp,在main.cpp里面添加内容如下#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){ QApplication app(argc, argv); QLabel label(QObject::tr("Hello, world!")); label.show(); return app.exec();}前面两行包含头文件,在QT 4中,头文件和类名是一致的, 阅读全文
posted @ 2011-11-21 13:57 移动应用开发 阅读(150) 评论(0) 推荐(0)