C++系列三:QT初识

前言

开发环境,挺折腾人,一波三折。

参考链接:官方文档C语言中文网QT快速入门书栈网
博主:qt技术开发老杰Bibili
其他:Qt 使用vs2022开发VS+QT程序打包发布1打包2

常见配置问题:

  1. 解决Visual Studio下使用qDebug没有输出
    项目属性->Linker->System->SubSystem设置为Console (/SUBSYSTEM:CONSOLE);output:选择Debug控制台;
  2. QSqlDatabase 不存在:VSTools-Qt=>projiect settings=>Qt mudules,
  3. Qt6.5编译MySQL驱动最简单方法:https://www.cnblogs.com/isleeping/p/17287857.html

QT介绍

  1. 跨平台的GUI,于1995年5月发布
  2. 主要用于桌面程序开发和嵌入式开发。
  3. 目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权
    GPLv2/GPLv3许可:使用了GLP许可的Qt代码允许销售,但必须开源。GPLv3还要求公开相关硬件信息。
    LGPLv3许可:与GPL类似,但更宽松。若只是链接或调用GPL许可协议的Qt代码,可以不开源。
  4. QML 主要用于手机移动应用程序
  5. Windows 下的 GUI 解决方案比较多:
    基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout;
//相关术语
//Qt Creator   	
Qt 的集成开发环境,本教程就使用它来创建和管理 Qt 项目。
//Assistant(Qt 助手)	
用来查看帮助文档,已被集成在 Qt Creator 中。
//Designer(Qt 设计师)	
图形界面可视化编辑工具,已被集成在 Qt Creator 中,在 Qt Creator 中编辑或创建界面文件时,就可以自动打开。
//Linguist(Qt 语言家)	
多国语言翻译支持工具,可以用来编辑语言资源文件,在开发多语言界面的应用程序时会用到。
//Qt  for Desktop	
Qt 命令行工具,用来配置 Qt 开发环境(主要是设置 PATH 变量)。
//qmake	
核心的项目构建工具,可以生成跨平台的 .pro 项目文件,并能依据不同操作系统和编译工具生成相应的 Makefile,用于构建可执行程序或链接库。
//Dynamic Link 和 Static Link:
动态链接库、静态链接库
Linux/Unix 系统里静态库扩展名一般是 .a,动态库扩展名一般是 .so 。Windows 系统里 VC 编译器用的静态库扩展名一般是 .lib,动态库扩展名一般是 .dll 。
//Explicit Linking 和 Implicit Linking:
Explicit Linking 即显式链接,Implicit Linking 即隐式链接,这两种都是动态链接库的使用方式。

项目类型:
//Qt Widgets Application
桌面平台的有图形用户界面GUI
//Qt Console Application
控制台应用程序
//Qt Quick Application
移动用户界面GUI

//Q_OBJECT
Q_OBJECT:本质是一个已定义好的宏,所有需要“信号和槽”功能的组件
//QT常用快捷键
工具->选项->环境->键盘,查看各默认快捷键;
F1	//帮助文档
F2/ctrl+鼠标左键	//追踪源,变量和函数的声明和定义相互切换
F3	//Ctrl+F查找,下一个
F4	//源文件与头文件相互切换
F5	//开始调试
F9	//设置断点相互切换
F10	//执行当前行程序语句
F11	//跟踪进入,即如果当前行有函数,就进入函数体

Ctrl+B	 //编译当前项目
Ctrl+R //运行程序(非调试)
Ctrl+H、L //水平布局、垂直布局
Ctrl + A=>(Ctrl + I)   //自动对齐代码,要选中才有效
Ctrl+F  //查找、替换
Ctrl+/	//注释相互切换
Ctrl+Shift+S	//保存所有文件
Ctrl + 滚轮 //编辑界面放大/缩小
Alt + Enter //快捷创建函数
Ctrl + Alt + ↑↓ //当前/选中行向上/下复制

//Ui设计界面
F3 //编辑控件
F4 //编辑信号槽

小记

1. 编码格式
#include <QTextCodec>  //添加头文件
QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); //设置编码
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
2. tr()函数
随国际化变化。
ui->pushButton->setText(tr("新窗口"));
3. 两类窗口打开的方式,
一个是自身消失而后打开另一个窗口;
一个是打开另一个窗口而自身不消失。
- 在主窗体添加一个按钮=>添加一个插槽=>跳转页面
//QDialog *dlg=new QDialog(this);
//dlg->show();
LoginDlg dlg;
dlg.exec();
- 在跳转页面添加一个按钮=>添加一个插槽 clicked()信号和LoginDlg的accept()槽并按下确定按钮。=>main.cpp
 MainWindow w;
LoginDlg dlg;                    // 建立自己新建的类的对象dlg
if(dlg.exec() == QDialog::Accepted) // 利用Accepted返回值判断按钮是否被按下
{
    w.show();             // 如果被按下,显示主窗口
    return a.exec();   // 程序一直执行,直到主窗口关闭
}
else return 0;  //如果没被按下,则不会进入主窗口,整个程序结束运行
4. 常用控件属性设置:
if(ui->usrLineEdit->text().trimmed() == tr("admin")&& ui->pwdLineEdit->text() == tr("123456"))
QLabel *lab; //声明
this->lab=new QLabel("hello,world",this);
ui->firstBtn->setText("新窗口");
QMessageBox::warning(this, tr("Waring"),tr("error!"), QMessageBox::Yes);                      
// 清空内容并定位光标
//placeholderText、setEchoMode(QLineEdit::Password)
ui->usrLineEdit->clear();
ui->pwdLineEdit->clear();
ui->usrLineEdit->setFocus();
5. 菜单设置:
// 创建新的动作
QAction *openAction = new QAction(tr("&Open"), this);
// 添加图标
QIcon icon(":/myImages/images/close.png");
openAction->setIcon(icon);
// 设置快捷键
openAction->setShortcut(QKeySequence(tr("Ctrl+O")));
// 在文件菜单中设置新的打开动作
ui->menu_F->addAction(openAction);

6. 其他:
//记事本打开myResources.qrc
是一个XML文档
//文件(&F)
表明将菜单的快捷键设置为了Alt+ F
//添加资源文件=>/myImages=>images=>需要的图标文件粘贴进去=>可以别名
icon(":/myImages/close");
7. qDebug("111"+str);
qDebug()<<"111";
8. 
//设置粗体,斜体,下划线
QFont font=ui->plainTextEdit->font();
font.setBold(checked);
//font.setItalic(checked);
//font.setUnderline(checked);
ui->plainTextEdit->setFont(font);
//设置字体颜色:
QPalette plet=ui->plainTextEdit->palette();
if(ui->radioButton_black->isChecked())
    plet.setColor(QPalette::Text,Qt::black);
if(ui->radioButton_blue->isChecked())
    plet.setColor(QPalette::Text,Qt::blue);
if(ui->radioButton_red->isChecked())
    plet.setColor(QPalette::Text,Qt::red);
ui->plainTextEdit->setPalette(plet);

QPushButton btn("button");
QObject::connect(&btn,&QPushButton::clicked,&QApplication::quit);
QObject::connect(&btn,&QPushButton::clicked,[](bool) {
        qDebug() << "You clicked me!";
    });
btn.show();

相关图片如下

imgimgimg

posted @ 2023-08-12 15:27  cactus9  阅读(178)  评论(0编辑  收藏  举报