QT windows VS C++

1. 前期准备

a. 下载QT

地址:http://qt-project.org/downloads

对象:Show Downloads->QT X.X.X for Windows 32或64bit (VS2010,OpenGL,593M)

得到qt-opensource-windows-x86-msvc2010-5.2.1.exe,点击安装,一路确定。


b. 下载VS QT插件

地址:上述地址不变

对象:Show Downloads->Other downloads->Visual Studio Add-in X.X.X  for QT5 (supports versions 2008,2010,2012,does not work with the Express edition)

得到qt-vs-addin-opensource-1.2.3-alpha.exe,点击安装,一路确定。


2. 开始配置

a. 新建项目->QT5 projects->QT Application->Finish

b. 项目建立后,菜单栏Qt5->Qt Options->Qt Versions->Add->Version name输入Qt5.2.1->Path找到Qt安装目录,如C:/Qt/Qt5.2.1/5.2.1/msvc2010->OK

c. 右击项目->属性->配置属性->VC++ 目录

包含目录->C:QtQt5.2.15.2.1msvc2010include

库目录->    C:QtQt5.2.15.2.1msvc2010lib


至此配置完成。


3.写界面

用QT designer设计界面,生成文件xxx.ui。

打开Qt控制台


生成可以使用的.h文件


将生成的ui_xxx.h文件拷到工程目录,然后添加到工程中。


使用ui_xxx.h生成自己的.h文件

首先创建xxx.h,然后继承QDialog和Ui::yyy


特别注意这里必须引入QDialog.h的头文件,否则在xxx.cpp中报QDialog不是基类错误:"QDialog" 不是类 "NetCom" 的非静态数据成员或基类。

Form为类名,具体名字可以从ui_xxx.h中找到,文件最后


接下来创建xxx.cpp文件,包含xxx.h头文件,实现构造函数


构造函数中只要有setupUi(this)这句就够了,其他的应自己的需要添加。特别注意setupUi(this)永远都放在最前面:

setupUi(this);

SetCom();

comboBox1->insertItem(0, QString::QString("better"));

否则报


因为ui_netCom.h类中声明了很多指针型成员变量即窗口部件指针,setupUi()对它们进行了new操作为指针创建了对象,后面才可以进行操作。否则上面的comboBox1->insertItem就是操作空指针。


4.添加后台程序

QString转string : qstr.toSTDString()
String转QString:QString::
QString(const char*)

数字转QString :QString::number(n);



QT界面不能控制台输出,查看中间结果的方法

首先添加头文件#include <qtextcodec.h>


其次分情况

QT4

构造函数中、setupUi()前添加

QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));

程序中

QString qstr1 = QString(tr("丁春秋"));

QString qstr2 = QString(tr("丁春秋"));


QT5

QTextCodec *codec = QTextCodec::codecForName("GB2312");

QString qstr1 = codec->toUnicode("写串口失败");

QString qstr2 = codec->toUnicode("原因未知");


最后

QMessageBox::warning(this, qstr1, qstr2, QMessageBox::Yes);

QT5中最好将QTextCodec *codec声明为类成员变量,在构造函数中codec = QTextCodec::codecForName("GB2312");,在程序中直接codec->toUnicode("汉字")

                 




设置部件中字体颜色

右击部件,选择样式表


设置颜色


颜色继承问题




QComboBox是下拉菜单


有时comboBox的选项不能事先定义、要根据程序执行情况添加方法:

comboBox1->insertItem(count, QString::QString(keyData));

count即位置参数,如

for(int i = 0; i < 10; i++)

comboBox1->insertItem(i, QString::number(i));



QPushButton是按钮,讲一下checkable、checked和enabled属性

setCheckable(true) 默认Checkable为false,即Button按下后自动弹起。设置为true后,点击一次则Button按下,点击第二次则Button弹起。

setChecked(true);设置Button为按下还是弹起状态,true按下,false弹起,注意:按下状态不表示点击按钮,就是设置一下Button的外观。

只有Checkable为true,设置Checked才有效。

setEnabled(false)则该Button不能点击,默认为true。


QPushButton的三种信号pressed()released()clicked()

pressed():按下按钮时发送该信号

released():松开按钮时发送该信号

clicked():单击一次按钮发送该信号

所以可以在程序中分别定义两个槽void on_pushButton_pressed()和void on_pushButton_released(),来响应按钮按下和松开两个动作。从而摆脱按钮只有单击事件的束缚。

on_pushButton_pressed(),在setupUi()中会自动将名为pushButton的窗口部件的pressed()信号与这个函数连接起来,保证窗口部件在发送该信号的时候,就会自动调用这个槽。



QGroupBox


就像上图中的“串口设置”样式。



界面最小化



点击界面按钮,后台程序开始执行,在执行完毕之前整个界面处于不响应状态。即任何点击、输入及其他一切操作均无效。



5.发布

在Win32Debug目录下生成exe文件


要打包发布给别人用必须找寻所有的库文件,这也是QT的毛病,带不齐dll文件程序给别人就没法用。

需要的依赖库和文件如下

在网盘里保留了一份QT5所有的依赖文件,有点大且CSDN网盘下载速度慢,考虑后使用。


使用Process Explorer查看依赖库

一开始就是借助于Process Explorer找到所有的依赖文件


运行exe,在Process Explorer中找到对应程序,点击


该程序所有的依赖库都显示在下方,点“Path”将依赖库规整一下,获取有用的dll



原文地址:https://www.cnblogs.com/chaikefusibushiji/p/6775796.html