zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    非常好的一个CentOS 6.2 apache 2.4.2 编译教程
    通过wifi 连接 adb 到 手机
    gradlew 的https代理设定
    ubuntu 安装 firefox 的 jre plugin
    如何在pycharm中使用配置好的virtualenv环境
    git clone了整个远程仓库分支
    centos7 mysql允许远程连接设置
    JPA hibernate spring repository pgsql java 工程(二):sql文件导入数据,测试数据
    hibernate 多对多 懒加载问题
    spring data jpa 利用@Query进行查询
  • 原文地址:https://www.cnblogs.com/chaikefusibushiji/p/7475640.html
Copyright © 2011-2022 走看看