标签:com class blog div code ext log string color get tab
重新开始学习qt,在年前已经看过一些知识点,但毫无进展,始终停留在知识点的阶段,或许有qt考试的话,我可以考得不错。然而学习qt,更多的是为了实战应用,并将其变成自己的兵器。
开始学习之前,先说说早前的一个困惑——为什么学习qt?最初学习qt,是因为身边朋友的强烈推荐,他说通过学习图形界面编程可以提高c++编程能力,而图形界面编程无非两种,一种MFC,另一种就qt了,MFC极其变态,想要简单快速,就学qt吧,于是我就开始看qt了。没过多久我有些动摇了,随着互联网时代的来临,编程方式正在慢慢改变,越来越多的图形应用转移到了网页版的形式,桌面应用似乎已经落伍,《黑客与画家》一书中提到美国的一个事实,美国人喜欢网页版的应用,而讨厌桌面应用,所以在美国,桌面应用不多,除了某些特殊应用保留着桌面应用,但是在中国,由于网速很慢,桌面应用依然坚挺,不过这一点终究会变化,qt未来的应用空间会减少,就如fortran,慢慢地变成某些特定领域的工具。刚开始想到这些的时候,就失去了学qt的动力,后来又回心转意了,qt暂时很有用,这是显然的,并且qt很有趣,学习一样有趣的东西,即使以后排不上用场,总还是一个非常有趣的过程。
以后每天学一点点qt,将笔记记录于此,希望持之以恒,并最终用qt写个图形界面程序,为写过的拨号器做个图形界面,或者朋友推荐的为sqlite3提供图形操作接口,立贴为证。
平台:WIN7, QT4.8.4+MINGW4.4+QT Creator2.6.2。
参考书籍:LINUx窗口程序设计——Qt4精彩实例分析
第一个例子,用qtcreator创建工程:
#include <QApplication> //qt所有图形应用程序都必须包含此文件,包含了各种资源#include <QPushButton>int main(int
argc, char
*argv[]){ QApplication a(argc, argv); QPushButton b("Hello World!"); b.show(); QObject::connect(&b, SIGNAL(clicked()), &a, SLOT(quit())); // qt信号槽机制,据说这是qt非常重要的一个概念 return
a.exec();} |
第二个实例,标准对话框,如word中的字体选择,颜色选择对话框等:
书中示例提供部分代码,许多地方需要补全,不清楚这是作者有意为之呢,还是无心的纰漏。
// standarddialogs.h#ifndef STANDARDDIALOGS_H#define STANDARDDIALOGS_H#include <QPushButton>#include <QDialog>#include <QWidget>#include <QGridLayout>#include <QLineEdit>#include <QFrame>#include <QColorDialog>#include <QColor>#include <QFont>#include <QFontDialog>#include <QString>#include <QFileDialog>class
StandardDialogs: public
QDialog //继承QDialog 对话框{ Q_OBJECT // qt特色之一,据传有点类似宏,又比宏高级,有一个名称叫做meta object,暂时不清楚其中奥妙public: StandardDialogs(QWidget *parent = 0, Qt::WindowFlags f = 0); ~StandardDialogs();public: QGridLayout *layout; QPushButton *filePushButton; QPushButton *colorPushButton; QPushButton *fontPushButton; QLineEdit *fileLineEdit; QLineEdit *fontLineEdit; QFrame *colorFrame;private
slots: void
slotOpenFileDlg(); void
slotOpenColorDlg(); void
slotOpenFontDlg();};#endif // STANDARDDIALOGS_H// standarddialogs.cpp#include "standarddialogs.h"StandardDialogs::StandardDialogs(QWidget *parent, Qt::WindowFlags f) :QDialog(parent, f){ setWindowTitle(tr("Standard Dialogs")); layout = new
QGridLayout(this); filePushButton = new
QPushButton; filePushButton->setText(tr("File Dialog")); colorPushButton = new
QPushButton; colorPushButton->setText(tr("Color Dialog")); fontPushButton = new
QPushButton; fontPushButton->setText(tr("Font Dialog")); fileLineEdit = new
QLineEdit; colorFrame = new
QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); fontLineEdit = new
QLineEdit; fontLineEdit->setText(tr("Hello world")); layout->addWidget(filePushButton, 0, 0); // 在layout上布局 layout->addWidget(fileLineEdit,0, 1); layout->addWidget(colorPushButton, 1,0); layout->addWidget(colorFrame, 1, 1); layout->addWidget(fontPushButton, 2, 0); layout->addWidget(fontLineEdit, 2, 1); layout->setMargin(15); layout->setSpacing(10); connect(filePushButton, SIGNAL(clicked()), this, SLOT(slotOpenFileDlg())); connect(colorPushButton, SIGNAL(clicked()), this, SLOT(slotOpenColorDlg())); connect(fontPushButton, SIGNAL(clicked()), this, SLOT(slotOpenFontDlg()));}StandardDialogs::~StandardDialogs(){ delete
layout; delete
filePushButton; delete
colorPushButton; delete
fontPushButton; delete
fileLineEdit; delete
colorFrame; delete
fontLineEdit;}void
StandardDialogs::slotOpenColorDlg() { QColor color = QColorDialog::getColor(Qt::blue); if(color.isValid()) { colorFrame->setPalette(QPalette(color)); }}void
StandardDialogs::slotOpenFontDlg(){ bool
ok; QFont font = QFontDialog::getFont(&ok); if(ok) { fontLineEdit->setFont(font); }}void
StandardDialogs::slotOpenFileDlg(){ QString s = QFileDialog::getOpenFileName( this, "open file dialog", "/", "C++ files(*.cpp);; C files(*.c);; Head File(*.h)"); fileLineEdit->setText(s.toAscii());}// main.cpp#include <QApplication>#include <QPushButton>#include "standarddialogs.h"int
main(int
argc, char
*argv[]){ QApplication a(argc, argv); StandardDialogs ct; ct.show(); QPushButton b("Hello World!"); b.show(); QObject::connect(&b, SIGNAL(clicked()), &a, SLOT(quit())); return
a.exec();} |
清楚了对话框和按钮,今天到此为止,不知道下一次会遇见什么好玩的东东。
标签:com class blog div code ext log string color get tab
原文地址:http://www.cnblogs.com/xy-kidult/p/3697474.html