5)~Qt~Desinger小观与qmake设置与使用
2010-11-28 19:55
423 查看
Desinger
是一个可视化的工具,尤其可以使布局简单,不过总有强人告诉我直接用代码更好~o(╯□╰)o
还是先来学习这个吧。
无论用编写代码的方式还是用Qt Designer,创建对话框都有如下基本的步骤:
1、创建和初始化子控件。
2、把子控件放到布局管理器中。
3、设置tab顺序。
4、创建信号和槽。
5、实现对话框的自己的槽函数。
然后我们设计一个有个textlabel,一个lineEdit,一个分隔符,2个pushbutton的小对话框,其中按钮一个是okButton和cancelButton把对话框设计好以后,保存为.ui文件。其中制作过程可以参考那本with Qt 4(宝书)。然后用文本编辑器写一个main.cpp放到同一文件夹下。
这段要说一下了,我们可以直接我creator,但是为了了解qmake,先这么做。
#include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::GoToCellDialog ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}
这段代码以后也要修改。
然后运行qmake
现在来了解qmake,qmake是个什么东西呢,qmake可以使你的纯文本编译的代码生成.pro文件,然后再生成Makefile。之后也可以生成.exe。就是说qmake自动帮你完成了编译器要完成的功能。我们用creator来做其实是一样的顺序。只不过界面更加友好简便了。
那么在控制台下(windows)
我推荐用Qt Command Prompt,不用设置太麻烦的环境变量,还可以在其中输入-edit直接来写代码。
环境变量的设置见后面的附录
qmake -project
qmake ***.pro
就可以了,qmake非常的天才,可以自动检测ui并且转化成等价的头文件。
然后我们run一下发现可以看,就是不能用。然后就这本书就创建一个新类,此类继承自QDialog和ui,实现功能,废话少说。代码如下
gotocelldialog.h
#ifndef COTOCELLDIALOG_H
#include <QtGui>
是一个可视化的工具,尤其可以使布局简单,不过总有强人告诉我直接用代码更好~o(╯□╰)o
还是先来学习这个吧。
无论用编写代码的方式还是用Qt Designer,创建对话框都有如下基本的步骤:
1、创建和初始化子控件。
2、把子控件放到布局管理器中。
3、设置tab顺序。
4、创建信号和槽。
5、实现对话框的自己的槽函数。
然后我们设计一个有个textlabel,一个lineEdit,一个分隔符,2个pushbutton的小对话框,其中按钮一个是okButton和cancelButton把对话框设计好以后,保存为.ui文件。其中制作过程可以参考那本with Qt 4(宝书)。然后用文本编辑器写一个main.cpp放到同一文件夹下。
这段要说一下了,我们可以直接我creator,但是为了了解qmake,先这么做。
#include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::GoToCellDialog ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}
这段代码以后也要修改。
然后运行qmake
现在来了解qmake,qmake是个什么东西呢,qmake可以使你的纯文本编译的代码生成.pro文件,然后再生成Makefile。之后也可以生成.exe。就是说qmake自动帮你完成了编译器要完成的功能。我们用creator来做其实是一样的顺序。只不过界面更加友好简便了。
那么在控制台下(windows)
我推荐用Qt Command Prompt,不用设置太麻烦的环境变量,还可以在其中输入-edit直接来写代码。
环境变量的设置见后面的附录
qmake -project
qmake ***.pro
就可以了,qmake非常的天才,可以自动检测ui并且转化成等价的头文件。
然后我们run一下发现可以看,就是不能用。然后就这本书就创建一个新类,此类继承自QDialog和ui,实现功能,废话少说。代码如下
gotocelldialog.h
#ifndef COTOCELLDIALOG_H
#define GOTOCELLDIALOG_H
#include <QDialog>
#include "ui_gotocelldialog.h"
class GoToCellDialog : public QDialog, public Ui::GoToCellDialog//继承了2个
{
Q_OBJECT
public:
GoToCellDialog(QWidget *parent = 0);
private slots:
void on_lineEdit_textChanged();//如果用on_objectName_signalName()命名的任意槽与相应的objectName()的signalName()
//自动连接这是很方便的一种机制。
};
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
gotocelldialog.cpp
#include <QtGui>
#include "gotocelldialog.h"
GoToCellDialog::GoToCellDialog(QWidget *parent)
:QDialog(parent)
{
setupUi(this);
QRegExp RegExp("[A-Za-z][1-9][0-9]{0,2}");//这里复制下原著
Qt提供了三个许可器类:QIntValidator,QDoubleValidator和QRegExpValidator。这里我们使用了QRegExpValidator,使用的表达式为“[A-Za-z][1-9][0-9]{0,2}”这个表达式的意思是第一个字符输入为大写或者小写字母,第二个字符为一个数字范围是1到9,第三个字符是一个数字范围为0到9。在QRegExpValidator的构造函数中,第二个参数为this,把当前类作为它的父控件,这样就可以不用删除它,父控件析构时可以被自动删除。 Qt的父子机制在QObject中实现的。当我们创建一个带有父的对象(如一个子控件,一个许可器,布局管理器等)时,父对象把子对象放到自己的子对象列表中。父对象被删除时,它查找自己的子对象并把每一个删除掉。这些子对象再把自己的子对象删除掉,如此递归,知道删除所有对象。 这种父子对象的机制简化了内存管理,减少了内存泄漏的危险。需要程序员删除的对象就是我们使用new创建的没有父对象的对象。如果我们在父对象存在时删除了它的一个子对象,Qt将会在父列表中自动删除。(需要记住的是Qt只是删除有父的对象,父对象还是需要手动删除的,还有就是那些用new申请的没有指定父的内存,一般情况下,在对话框里的子控件,许可器和布局管理器由Qt自己管理,其他还要程序员小心删除) 对于控件来讲,父对象还有一个意义:子控件在父对象的显示区域内显示。当父控件删除后,子控件不但在内存中被删除,它也同时在屏幕上消失。 在构造函数的最后两行,把QDialog的accept()函数连接到OK按钮的点击信号,把Cancel按钮的点击信号连接到reject()函数。这两个槽函数都关闭这个对话框,但是accept()返回 QDialog::Accepted(值为1),reject()返回值为QDialog::Rejected(值为0)。不同的返回值可以判断用户点击了那个按钮。 on_lineEdit_textChanged()槽函数控制Ok按钮的可用状态,通过编辑框中的输入字符,如果字符有效Ok按钮则有效,否则为不可用状态。QLineEdit::hasAcceptableInput()根据我们在构造函数中设置的许可器返回bool值。
lineEdit->setValidator(new QRegExpValidator(RegExp,this));
connect(okButton,SIGNAL(clicked()),this,SLOT(accept()));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(reject()));
}
void GoToCellDialog::on_lineEdit_textChanged()
{
okButton->setEnabled(lineEdit->hasAcceptableInput());
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
最后我们修改的main.cpp
#include<QApplication>//#include<QDialog>
#include"gotocelldialog.h"
int main(int argc , char *argv[])
{
QApplication app(argc, argv);
GoToCellDialog *dialog = new GoToCellDialog;
//ui.setupUi(dialog);
dialog->show();
return app.exec();
}
然后我们一样 qmake -project
qmake ***pro
之后我们就可以看到一个很不错的对话框了。但是我还是推荐用creator的方式来写,因为这个要是写错了,根本不知道那里有的问题。
不过这么先这么写一下,了解一下以后是有用的。
附录:
Qt环境变量的设置可以可以参考Qt安装目录bin文件夹下的qtenv.bat的设置,比如我的安装路径为D:/study/program/qt,那么该目录就在D:/study/program/qt/bin/qtenv.bat,其内容为: @echo off rem rem This file is generated rem echo Setting up a MinGW/Qt only environment... echo -- QTDIR set to D:/study/program/qt/qt echo -- PATH set to D:/study/program/qt/qt/bin echo -- Adding D:/study/program/qt/bin to PATH echo -- Adding %SystemRoot%/System32 to PATH echo -- QMAKESPEC set to win32-g++ set QTDIR=D:/study/program/qt/qt set PATH=D:/study/program/qt/qt/bin set PATH=%PATH%;D:/study/program/qt/bin;D:/study/program/qt/mingw/bin set PATH=%PATH%;%SystemRoot%/System32 set QMAKESPEC=win32-g++ 上面是批处理代码,其涵义简述如下: @:表示后面的命令不回显 echo:命令参数为[on] [off] [message] 分别表示[以后的命令都显示][都不显示][显示message] rem:是注释用的。 set:命令参数为[variable=[string]]用来显示,设置或删除环境变量,variable为变量名,string为其值。 那么,环境变量的设置方法为: (1)、右键单击“我的电脑”-“属性”-“高级”-“环境变量”-“系统变量” (2)、“新建”,变量名设置为:QTDIR,变量值设置为:D:/study/program/qt/qt (3)、同2,“新建”,变量名设置为:QMAKESPEC,变量值设置为:win32-g++ (4)、path变量一般都会有,只要添加就行了,双击path变量,在变量值后面添加:;D:/study/program/qt/qt/bin;D:/study/program/qt/bin;D:/study/program/qt/mingw/bin;%SystemRoot%/System32 (5)、上述变量和值必须和qtenv.bat中的对应,然后就OK了。 --------------------------------------------------------------------------------------------------------------------------------- 下面是我添加的修改注册表的方法: @echo off rem @ 后面的语句不回显 rem echo off 后面的所有命令不回显 reg add "HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" /v QTDIR /d "D:/study/program/qt/qt" /t Reg_SZ /f reg add "HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" /v Path /d "%path%;D:/study/program/qt/qt/bin;D:/study/program/qt/bin;D:/study/program/qt/mingw/bin;%SystemRoot%/System32" /t REG_EXPAND_SZ /f reg add "HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" /v QMAKESPEC /d "win32-g++" /t Reg_SZ /f pause 上面代码保存为qt.bat,双击运行即可,注意:里面红颜色的部分请与你的qtenv.bat对应部分对应好,如果怕误操作,请先备份注册表。 转载自:http://hi.baidu.com/秀才太守[/code]
我就是照着这个来弄的。不过我一直用的是Qt Command Prompt。
推荐用这个哈。
相关文章推荐
- Qt Designer小观与qmake设置与使用
- [转]Qt中使用GridLayout如何设置一个按钮占两个位置
- QT中使用qDebug()在VS下的设置
- Qt学习笔记2014.7.17.14:16——下拉框使用以及设置文字字体、字号
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- qt中的qmake命令设置
- 【Qt开发】QSplitter的使用和设置
- Qt中使用setStyleSheet对按钮进行外观设置
- 使用Qt 4如何设置QLabe中字体的颜色
- Qt设置窗口的初始大小(使用sizeHint这个虚函数,或者在构造函数里使用resize函数)
- Qt(C++)项目中使用 Basler 工业相机(2 参数设置)
- Qt之QTableWidget的使用及常用设置
- 使用kdevelop4进行qt4编程方面的设置
- 零基础学Qt 4编程实例之如何设置Qt应用程序的观感-使用QStyle类
- Qt 之 样式表的使用——设置样式的方法
- QT总结第5篇:qmake的使用,如何操作QT命令行
- qmake的使用(可设置c编译器flag参数)
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
- Qt中使用setStyleSheet对QPushButton按钮进行外观设置
- Qt 之 样式表的使用——设置样式的方法