一.QT
1.工具
assistant 帮助文档
qtconfig QT配置工具
qmake QT的make与项目文件智能创建工具
uic UI界面的设计文件的编译工具
moc moc代码创建工具
designer UI设计工具
2.QT 的模块
qtcore
qtgui
qtnetwork
qtsvg
qtopengl
3.第一QT程序
1.QT编程模型
2.QT程序编译过程
1.QT是C++程序.
2.QT程序启动QT的环境QApplication
3.编程的模型
qmake -project
qmake *.pro
make
执行
4.*.pro文件
TEMPLATE=
:app 应用程序
:lib 库
SOURCES=
:cpp文件1 cpp文件2 cpp文件3 ....
:\ 续行符号
:SOURCES+=
HEADERS=
:h头文件
CONFIG= 影响gcc的选项
:release | debug
:warn_on | warn_off -Wall -w
:qt | opengl
:shared | static
QT= (该变量在CONFIG=qt才有意义)
:core
:gui
:network
:opengl
:svg
:xml
:sql
TARGET=
:输出文件名 (-o输出文件)
LIBS=用户指定库
:-l -L
5.怎么学习QT
QT类的结构层次.
QT的信号signal与槽slot.
QT基本组件
QT的UI设计器
二.直观认识QT
封装与帮助文档的使用
1.文档的组成部分:
1.模块
2.类作用简单描述
3.头文件
4.父类与派生类
5.构造器/析构器()
6.共有函数
2.乱码处理
QT提供翻译机制
QTextCodec
3.代码组织
以窗体为基本单位的封装
案例:
登录
QDialog
QPushButton
QLabel
logindlg.cpp
上面界面设计方式要命啊 用界面设计器
4.QT的界面设计器
designer
4.1.工具视图:
用户设计区
工具箱
资源管理器
属性编辑器(ctrl+i)
动作编辑器
信号槽编辑器
*.ui
4.3.编辑属性
1.文本属性(直接双击或者在属性编辑器里编辑)
2.对象名属性
3.字体属性
4.4.编辑组件
-> <-方向
shift+
ctrl+
shift+ctrl+
4.5.打开ui文件
ui是xml文本文件
4.6.使用ui文件
自动使用
手工使用
Ui::对象名的类
类的构造器:没有(缺省构造器)
1.工具
assistant 帮助文档
qtconfig QT配置工具
qmake QT的make与项目文件智能创建工具
uic UI界面的设计文件的编译工具
moc moc代码创建工具
designer UI设计工具
2.QT 的模块
qtcore
qtgui
qtnetwork
qtsvg
qtopengl
3.第一QT程序
1.QT编程模型
2.QT程序编译过程
3.QT的项目组织
main.cpp
#include <QApplication>
#include <QDialog>
int main(int args,char **argv)
{
//qmake -project
//qmake **.pro
//make
//执行程序
QApplication app(args,argv);
QDialog dlg;
dlg.setVisible(true);
return app.exec();//等待子线程结束
}
编译执行过程 首先cd到main.cpp所在的目录
第一步:qmake -project 生成项目配置文件,也就是.pro文件
第二步:qmake *.pro 生成Makefile文件
第三步:make 就编译好了 生成可执行文件
1.QT是C++程序.
2.QT程序启动QT的环境QApplication
3.编程的模型
qmake -project
qmake *.pro
make
执行
4.*.pro文件
TEMPLATE=
:app 应用程序
:lib 库
SOURCES=
:cpp文件1 cpp文件2 cpp文件3 ....
:\ 续行符号
:SOURCES+=
HEADERS=
:h头文件
CONFIG= 影响gcc的选项
:release | debug
:warn_on | warn_off -Wall -w
:qt | opengl
:shared | static
QT= (该变量在CONFIG=qt才有意义)
:core
:gui
:network
:opengl
:svg
:xml
:sql
TARGET=
:输出文件名 (-o输出文件)
LIBS=用户指定库
:-l -L
FORMS=ui文件
写一个静态库(或动态库)程序
add.cpp
int add(int a,int b)
{
return a+b;
}
sub.cpp
int sub(int a,int b)
{
return a-b;
}
main.pro
TEMPLATE=lib
SOURCES=add.cpp \
sub.cpp
HEADERS=
CONFIG=release shared
TARGET=ku
首先 qmake 直接生成Makefile文件
再 make
5.怎么学习QT
QT类的结构层次.
QT的信号signal与槽slot.
QT基本组件
QT的UI设计器
二.直观认识QT
封装与帮助文档的使用
1.文档的组成部分:
1.模块
2.类作用简单描述
3.头文件
4.父类与派生类
5.构造器/析构器()
6.共有函数
7.属性
main.cpp
#include <QApplication>
#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
int main(int args,char**argv)
{
QApplication app(args,argv);
QDialog dlg;
dlg.resize(400,300);
dlg.move((1024-400)/2,(768-300)/2);
QPushButton btn(&dlg);
btn.resize(100,30);
btn.move(100,100);
btn.setText("确定");
QLineEdit edt(&dlg);
edt.resize(100,30);
edt.move(100,200);
edt.setText("确定");
dlg.setVisible(true);
return app.exec();
}
main.pro
TEMPLATE=app
SOURCES=main.cpp
CONFIG=release qt
QT=core gui
TARGET=main
转到本目录 然后qmake 然后make 然后执行可执行程序
2.乱码处理
QT提供翻译机制
QTextCodec
3.代码组织
以窗体为基本单位的封装
案例:
登录
QDialog
QPushButton
QLabel
QLineEdit
logindlg.h
#ifndef LOGINDLG_H
#define LOGINDLG_H
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
class LoginDialog : public QDialog
{
private:
QLabel *lbluser;
QLabel *lblpass;
QLineEdit *edtuser;
QLineEdit *edtpass;
QPushButton *btnlogin;
QPushButton *btncancel;
public:
LoginDialog(QWidget *parent=NULL);
};
#endif // LOGINDLG_H
logindlg.cpp
#include "logindlg.h"
LoginDialog::LoginDialog(QWidget *parent)
:QDialog(parent)
{
resize(400,300);
move((1024-400)/2,(768-300)/2);
//标签
lbluser=new QLabel(this);
lblpass=new QLabel(this);
lbluser->resize(100,30);
lbluser->move(50,40);
lblpass->resize(100,30);
lblpass->move(50,100);
lbluser->setText("用户:");
lblpass->setText("口令:");
//文本输入框
edtuser=new QLineEdit(this);
edtpass=new QLineEdit(this);
edtuser->resize(200,30);
edtuser->move(150,40);
edtpass->resize(200,30);
edtpass->move(150,100);
//登录 取消按钮
btnlogin=new QPushButton(this);
btncancel=new QPushButton(this);
btnlogin->resize(60,30);
btnlogin->move(90,210);
btncancel->resize(60,30);
btncancel->move(250,210);
btnlogin->setText(QObject::tr("登录"));
btncancel->setText(QObject::tr("取消"));
}
main.cpp
#include "logindlg.h"
#include <QApplication>
int main(int args,char**argv)
{
QApplication app(args,argv);
LoginDialog dlg;
dlg.setVisible(true);
return app.exec();
}
main.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = first
TEMPLATE = app
SOURCES += main.cpp \
logindlg.cpp
HEADERS += \
logindlg.h
FORMS += mainwindow.ui
上面界面设计方式要命啊 用界面设计器
4.QT的界面设计器
designer
4.1.工具视图:
用户设计区
工具箱
资源管理器
属性编辑器(ctrl+i)
动作编辑器
信号槽编辑器
对象察看器(选择对象)
下面我们用界面设计器写一个完整的程序例子
操作 打开Qt设计器
选择窗体开始设计
*.ui
4.3.编辑属性
1.文本属性(直接双击或者在属性编辑器里编辑)
2.对象名属性
3.字体属性
4.4.编辑组件
-> <-方向
shift+
ctrl+
shift+ctrl+
4.5.打开ui文件
ui是xml文本文件
4.6.使用ui文件
自动使用
手工使用
uic编译ui文件
首先cd到当前目录
然后 uic login.ui -o login.h 输出文件名为login.h(文件内容见下面)的文件
产生:Ui_对象名的类Ui::对象名的类
类的构造器:没有(缺省构造器)
类的方法:setUi(QDialog *);依附在哪个窗体上
login.h
/********************************************************************************
** Form generated from reading ui file 'login.ui'
**
** Created: Fri Nov 19 17:12:01 2010
** by: Qt User Interface Compiler version 4.4.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
#ifndef LOGIN_H
#define LOGIN_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
QT_BEGIN_NAMESPACE
class Ui_LoginDialog
{
public:
QLabel *lbluser;
QLabel *lblpass;
QLineEdit *edtuser;
QLineEdit *edtpass;
QPushButton *btnlogin;
QPushButton *btncancel;
void setupUi(QDialog *LoginDialog)
{
if (LoginDialog->objectName().isEmpty())
LoginDialog->setObjectName(QString::fromUtf8("LoginDialog"));
LoginDialog->resize(400, 262);
lbluser = new QLabel(LoginDialog);
lbluser->setObjectName(QString::fromUtf8("lbluser"));
lbluser->setGeometry(QRect(70, 50, 86, 22));
QFont font;
font.setPointSize(14);
font.setBold(true);
font.setWeight(75);
lbluser->setFont(font);
lblpass = new QLabel(LoginDialog);
lblpass->setObjectName(QString::fromUtf8("lblpass"));
lblpass->setGeometry(QRect(70, 100, 85, 22));
lblpass->setFont(font);
edtuser = new QLineEdit(LoginDialog);
edtuser->setObjectName(QString::fromUtf8("edtuser"));
edtuser->setGeometry(QRect(160, 50, 181, 28));
edtpass = new QLineEdit(LoginDialog);
edtpass->setObjectName(QString::fromUtf8("edtpass"));
edtpass->setGeometry(QRect(160, 100, 181, 28));
btnlogin = new QPushButton(LoginDialog);
btnlogin->setObjectName(QString::fromUtf8("btnlogin"));
btnlogin->setGeometry(QRect(70, 170, 110, 32));
btncancel = new QPushButton(LoginDialog);
btncancel->setObjectName(QString::fromUtf8("btncancel"));
btncancel->setGeometry(QRect(230, 170, 110, 32));
retranslateUi(LoginDialog);
QMetaObject::connectSlotsByName(LoginDialog);
} // setupUi
void retranslateUi(QDialog *LoginDialog)
{
LoginDialog->setWindowTitle(QApplication::translate("LoginDialog", "Dialog", 0, QApplication::UnicodeUTF8));
lbluser->setText(QApplication::translate("LoginDialog", "\347\224\250\346\210\267\357\274\232", 0, QApplication::UnicodeUTF8));
lblpass->setText(QApplication::translate("LoginDialog", "\345\217\243\344\273\244\357\274\232", 0, QApplication::UnicodeUTF8));
btnlogin->setText(QApplication::translate("LoginDialog", "\347\231\273\345\275\225", 0, QApplication::UnicodeUTF8));
btncancel->setText(QApplication::translate("LoginDialog", "\345\217\226\346\266\210", 0, QApplication::UnicodeUTF8));
Q_UNUSED(LoginDialog);
} // retranslateUi
};
namespace Ui {
class LoginDialog: public Ui_LoginDialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // LOGIN_H
4.7.使用UI类型
dlglogin.h
#ifndef MY_LOGINDLG_H
#define MY_LOGINDLG_H
#include <QDialog>
#include "login.h"
class DlgLogin : public QDialog
{
private:
Ui_LoginDialog *ui;
public:
DlgLogin(QDialog*parent=NULL);
~DlgLogin();
};
#endif
dlglogin.cpp
#include "dlglogin.h"
DlgLogin::DlgLogin(QDialog*parent)
:QDialog(parent)
{
ui=new Ui_LoginDialog;
ui->setupUi(this);
}
DlgLogin::~DlgLogin()
{
delete ui;
}
main.cpp
#include <QApplication>
#include "dlglogin.h"
int main(int args,char **argv)
{
QApplication app(args,argv);
DlgLogin dlg;
dlg.setVisible(true);
return app.exec();
}
main.pro
TEMPLATE=app
SOURCES=main.cpp \
dlglogin.cpp
HEADERS=login.h \
dlglogin.h
CONFIG=release qt
QT=core gui
TARGET=main