嵌入式软件开发QT-01-helloworld工程的几种编写方式以及详解
来源:互联网 发布:直播 知乎 编辑:程序博客网 时间:2024/06/06 00:34
1.使用纯代码方式编写helloworld
新建一个空工程
此时目录中只有一个pro文件
右键工程目录,新建c++源文件并且加入工程
此时工程目录为
在改写pro文件为
SOURCES += \ main.cpp#为高版本模块添加widgets模块greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
然后改写main.cpp文件为
#include <QApplication>#include <QDialog>#include <QLabel>//主函数int main(int argc, char *argv[]){ //QApplication类用于管理应用程序资源,所有Qt Widgets程序必有 QApplication a(argc, argv); //声明QDialog对象,生成对话框 QDialog w; //设置对话框大小 w.resize(400, 300); //声明QLabel对象,此对象继承自QDialog类 QLabel label(&w); //设置标签位置 label.move(120, 120); //设置标签内的内容,通过QObject::tr()函数实现多语言支持 label.setText(QObject::tr("hello world!你好,世界!")); //显示w对象 w.show(); //使QApplication进入事件循环,可以接收事件,否则将会秒退 return a.exec();}
编译运行
如果使用命令行编译程序,复制刚刚的main.cpp到一个新目录
打开Qt 5.9.1 for Desktop (MinGW 5.3.0 32 bit)
cd到工程目录
qmake -project
生成pro文件,在生成的pro文件中加入
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
然后
qmake生成make文件
最后
mingw32-make生成可执行文件
dir一下看看文件名字,直接执行
2.使用ui文件
在上一个工程中,添加ui文件
这样可以生成一个ui文件,名字默认即可,也可以不默认,但是这个名字将会写入主函数中
使用qt设计师拖拽设计ui界面
然后点击构建,发现在工程文件的ddebug目录中多了一个h文件
简单解释一下
/********************************************************************************** Form generated from reading UI file 'dialog.ui'**** Created by: Qt User Interface Compiler version 5.9.1**** WARNING! All changes made in this file will be lost when recompiling UI file!********************************************************************************///预防多重包含的宏定义#ifndef UI_DIALOG_H#define UI_DIALOG_H#include <QtCore/QVariant>#include <QtWidgets/QAction>#include <QtWidgets/QApplication>#include <QtWidgets/QButtonGroup>#include <QtWidgets/QDialog>#include <QtWidgets/QHeaderView>#include <QtWidgets/QLabel>//QT命名空间开始QT_BEGIN_NAMESPACE//添加Ui_前缀,实现一个模板的父类class Ui_Dialog{public://添加的label部件 QLabel *label;//生成界面函数 void setupUi(QDialog *Dialog) { if (Dialog->objectName().isEmpty()) Dialog->setObjectName(QStringLiteral("Dialog")); //大小、位置属性设置Dialog->resize(400, 300); label = new QLabel(Dialog); label->setObjectName(QStringLiteral("label")); label->setGeometry(QRect(120, 120, 128, 32)); retranslateUi(Dialog); //添加信号与槽功能QMetaObject::connectSlotsByName(Dialog); } // setupUi //添加编码转换功能void retranslateUi(QDialog *Dialog) { Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", Q_NULLPTR)); label->setText(QApplication::translate("Dialog", "hello, world!", Q_NULLPTR)); } // retranslateUi};namespace Ui { //继承自父类的可用的类class Dialog: public Ui_Dialog {};} // namespace UiQT_END_NAMESPACE#endif // UI_DIALOG_H注意先构建文件,然后再修改主函数
//头文件名为debug文件夹中自动生成的文件#include "ui_dialog.h"int main(int argc, char *argv[]){ QApplication a (argc, argv); QDialog w; //此处注意,Ui命名空间中的类,查看ui_dialog.h文件中的类名,一般与ui文件名字相同,并且首字母大写 Ui::Dialog ui; ui.setupUi(&w); w.show(); return a.exec();}点击运行
3.使用自定义c++类
建立空工程,然后添加c++类,以hellodialog命名,再新建ui文件,添加main.cpp
最终工程目录为
修改hellodialog.cpp文件为
#include "hellodialog.h"#include "ui_hellodialog.h"HelloDialog::HelloDialog(QWidget *parent) : QDialog(parent), ui(new Ui::HelloDialog){ //为当前对话框创建界面 ui->setupUi(this);}HelloDialog::~HelloDialog(){ delete ui;}
修改h文件为
#ifndef HELLODIALOG_H#define HELLODIALOG_H#include <QDialog>namespace Ui {class HelloDialog;}class HelloDialog : public QDialog{ //扩展普通c++类功能 Q_OBJECTpublic: //显示构造函数,指定父窗口 explicit HelloDialog(QWidget *parent = 0); ~HelloDialog();private: Ui::HelloDialog *ui;};#endif // HELLODIALOG_H
最后编译,即可完成
4.使用qt设计师类
新建空工程,添加qt设计师类
这个类建立了一整套的文件
添加主函数,修改为
#include <QApplication>#include "dialog.h"int main(int argc, char* argv[]){ QApplication a (argc, argv); Dialog w; w.show(); return a.exec();}
编译运行
以上就是4种编写代码的方式。
阅读全文
0 0
- 嵌入式软件开发QT-01-helloworld工程的几种编写方式以及详解
- 嵌入式软件开发--QT--
- Ubuntux下QT编写 linux嵌入式开发板的程序
- 四、Qt的HelloWorld详解
- 使用Xcode编写Qt工程(生成开发Qt的Xcode工程)
- Qt嵌入式软件开发----------QPaintEvent事件的相关理解
- 嵌入式软件开发------------------Qt之QSettings类的常用函数
- 嵌入式软件开发-----Qt setPen()画笔函数的初步了解
- Qt嵌入式软件开发----------QPaintEvent事件的相关理解
- 嵌入式3D-嵌入式3D软件开发环境的建立-嵌入式GUI与Qt/Embedded
- llinux下编写qt的“helloworld”
- js类编写的几种方式
- 软件开发中需求编写的几点经验之谈
- 嵌入式软件开发--QT--AD转换
- Linux 安装软件的几种方式
- 关于Java集成开发环境(IDE)---NetBeans的安装,以及Helloworld编写
- 嵌入式项目1--Qt编写上位机软件
- JNI开发环境搭建以及创建HelloWorld工程
- Netty源码分析:PoolChunk
- maven常见问题总结
- maven整合ssm时mybatis-Spring的版本问题
- web 应用 为啥 需要用到 tomcat 之类的 部署
- 类加载过程
- 嵌入式软件开发QT-01-helloworld工程的几种编写方式以及详解
- ubuntu server 14.04下LAMP环境搭建
- Android ADB
- 类与对象以及面向对象的概念
- 深入浅出ClassLoader
- PS(二)
- TensorFlow学习笔记:构建多分类任务模型(未完)
- UVA-11059 Maximum Product
- poj1696