Qt学习1之初建小工程
来源:互联网 发布:江苏卫视网络源 编辑:程序博客网 时间:2024/06/03 17:23
一、Qt的安装和配置方法
我参考的网站是http://blog.csdn.net/liang19890820/article/details/49874033。我的配置是64位的VS2013+Qt5.5.1(x84),因为Qt5.5.1没有64位的,而且据说64位的Qt很坑。
在上面一个网址中可以带你手把手新建一个工程,接下来,我将讲解这个工程代码的意思。
在使用VS2013开发时,工程在编译后,可能会报错,提示找不到头文件。这些错误虽然不影响程序的运行,但是会让你在编写代码时不能享受代码提示功能。
这里提供一个网上找到的解决方法:直接在系统变量里面加了一个
变量名为QTDIR,值为C:\Qt\Qt5.3.1\5.3\msvc2010_opengl(值是Qt安装的目录)。
使用这个方法之后再次新建工程,如果还会报错,提示无法找到ui_*.h文件(*代表你的工程名),此时你只需点击工程列表的Generated Files,查看ui_*.h是否存在,如果没有,则需要手动将其添加。该h文件一般存在于你的工程目录的Generated Files文件夹下。
二、使用Qt工程做一个计算圆面积的程序
为了方便移植,而且基于习惯,Qt设计全部使用编辑代码完成。
在工程名的h文件中
#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <QGridLayout>
在工程名类对象中加入
private:QLabel *label1, *label2;QLineEdit *lineEdit;QPushButton *button;private slots:void showArea();
在工程名的cpp文件中
const static double PI = 3.1415926;Qtdig::Qtdig(QWidget *parent): QDialog(parent){ui.setupUi(this);label1 = new QLabel(this);QString str = QString::fromLocal8Bit("请输入圆的半径:");label1->setText(str);label2 = new QLabel(this);lineEdit = new QLineEdit(this);button = new QPushButton(this);str = QString::fromLocal8Bit("计算圆的面积:");button->setText(str);QGridLayout *mainLayout = new QGridLayout(this);mainLayout->addWidget(label1, 0, 0);mainLayout->addWidget(lineEdit, 0, 1);mainLayout->addWidget(label2, 1, 0);mainLayout->addWidget(button, 1, 1);connect(button, SIGNAL(clicked()), this, SLOT(showArea()));}Qtdig::~Qtdig(){}void Qtdig::showArea(){bool ok;QString tempStr;QString valueStr = lineEdit->text();int valueInt = valueStr.toInt(&ok);double area = valueInt*valueInt*PI;label2->setText(tempStr.setNum(area));}
效果如图:
三、小节
1、main.cpp介绍
#include "qtdig.h"
包含了程序中要完成功能的Dialog类的定义,在Dialog类中封装完成所需要的功能。
#include <QtWidgets/QApplication>
:Application类的定义,每个程序必须使用一个QApplication对象。
int main(int argc,char *argv[])
:程序的入口,在控制转交给Qt库之前执行初始化,然后Qt库通过事件向程序告知用户的行为。
argc是命令行变量的数量,argv是命令行变量的数组。
{
QApplication a(argc,argv);
:QApplication 的对象,处理命令行变量。
QtDig w;
w.show();
:创建一个窗口部件时,默认为不可见,需要调用show()。
return a.exec();
:程序进入消息循环,等待可能的输入进行响应。
}
2、VS2013中使用Qt显示中文出现乱码,则需要将想要的中文处理之后,再显示。
QString str = QString::fromLocal8Bit("请输入圆的半径:");
3、使用槽函数时一定要声明槽函数,注意加slots。如private slots:
4、信息与槽机智的连接方式:
①最常见的连接方式,一个信号连一个槽:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(slot));
②两个信号相连:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));
表示Object1的信号1发射会触发Object2的信号1发射。
③同一个信号连接多个槽:connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect(Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));
④同一个槽响应多个信号:
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect(Object3,SIGNAL(signal2),Object2,SIGNAL(slot2));
注:SIGNAL()和SLOT()是Qt定义的两个宏,它们返回它们的参数的C语言风格的字符串(const char*)。下面语句等同:
connect(button,SIGNAL(clicked()),this,SLOT(showArea()));
connect(button,“clicked()”,this,“showArea()”);
6、new操作是创建堆对象,delete操作是删除堆对象。
7、设计GUI界面最好使用Qt提供的布局管理器。
QGridLayout *mainLayout = new QGridLayout(this);
:创建一个网格布局管理器对象,并用this指出它的父窗口。
mainLayout->addWidget(label1, 0, 0);
mainLayout->addWidget(lineEdit, 0, 1);
mainLayout->addWidget(label2, 1, 0);
mainLayout->addWidget(button, 1, 1);
:将各个控件对象放置在该管理器中。
setLayout(mainLayout);
:将布局管理器添加到对应的窗口部件对象中。
- Qt学习1之初建小工程
- Qt学习之将资源文件添加到工程里面
- Qt上的OpenCV学习日记①之工程创建
- Qt学习笔记(1) 命令行使用qmake构建工程
- Qt学习之路(1)
- Qt之XML学习1
- Qt之 Testlib学习(1)
- qt学习之路1
- windows qt学习笔记----vs新建QT工程及常见问题解决(1)
- qt学习之qt creator
- qt学习之qt安装
- Qt学习笔记:工程文件解说
- Qt学习笔记:工程文件解说
- Qt---第一个工程建立与学习
- Qt的.pro工程文件语法学习
- 学习记录-Qt的多工程管理
- Qt的.pro工程文件语法学习
- Qt学习笔记3:Qt工程的目录结构
- 【Hibernate】一对一关联映射
- Latex调整行间距
- Ubuntu14.04安装mlpy(机器学习库)---python
- 精选30道Java笔试题解答
- 高校云平台(八):分析代码依赖关系
- Qt学习1之初建小工程
- R语言数据输入输出
- android设计模式
- python网络编程之阻塞与非阻塞模式的选择
- 搭建Spring(4)
- python里isinstance()函数的用法
- 6. ZigZag Conversion
- '\r'和'\n'的区别
- [Java]Error:No enclosing instance of type E is accessible. Must qualify the allocation with an enclo