![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
onj123
这个作者很懒,什么都没留下…
展开
-
Qt:打包程序
window打包1、win+R 打开dos命令行窗口2、cd C:\Users\Administrator.000\Desktop\exe3、G:\Qt\Qt5.8.0\5.8\mingw53_32\bin\windeployqt.exe ui.exe4、运行ui.exe,缺哪个就去bin下复制Linux打包通过ldd命令查找依赖库原创 2020-05-12 18:59:54 · 130 阅读 · 0 评论 -
Qt:屏幕旋转
QT4:运行时加-display “Transformed:Rot90”QT5:MainWindow *main=new MainWindow; //项目主窗口QGraphicsScene *scene = new QGraphicsScene; //容器QGraphicsProxyWidget *w = scene->addWidget(main);w->setRotation(90);QGraphicsView *view = new QGra原创 2020-05-12 18:59:06 · 690 阅读 · 0 评论 -
Qt:内存回收
自动回收内存1. 在栈上实例化2. 在堆上实例化,但是使用共享指针,当引用计数为0时则自动释放3. QWidget设置属性,关闭窗口时自动释放:setAttribute(Qt::WA_DeleteOnClose);4. QAbstractAnimation设置属性,关闭窗口时自动释放:QAbstractAnimation::DeleteWhenStopped5. 指定父对象Qt使用对象树维护,当删除父对象时把其子对象一起删除,即(删除父窗口,子窗口一起删除)。如果不指定父对象,则父窗口和子窗口独原创 2020-05-12 18:58:34 · 355 阅读 · 0 评论 -
Qt:视图QTableView/QTableWidget
QTableView1. 表头水平表头:horizontalHeader()垂直表头:verticalHeader()表头字段个数:count();2. 绑定模型:setModel()3. 获取绑定的模型:selectionModel()4. 委托:setItemDelegate(new ItemDelegate(this)); 5. 信号表头点击:sectionClicked(int)单元格点击:clicked(const QModelIndex&)模型改变:currentC原创 2020-05-12 18:55:58 · 686 阅读 · 0 评论 -
Qt:数据库模型QSqlQueryModel/QSqlTableModel
查询模型QSqlQueryModel1. 实例化模型:QSqlQueryModel model;2. 表头:model.setHeaderData(0, Qt::Horizotal, "");3. 执行sql语句:model.setQuery("select * from tableName");4. 实例化视图:QTableView view;5. 视图设置数据源:view.setModel(model);注意:setQuery执行sql语句后,结果集在model中操作model行列数:原创 2020-05-12 18:54:54 · 1323 阅读 · 1 评论 -
Qt:模型/视图/委托
view:显示数据model:保存数据delegate:协调model和view之间的数据edit(编辑)和render(渲染)viewQListView:列表QTreeView:树形QTableView:表格推荐使用QTableView,通过setModel()绑定数据源区别:1. QTableWidget是QTableView的子类2. QTableView可以自定义数据模型(setModel),QTableWidget的setModel()是私有的,不可以自定义数据源,只能使用标准原创 2020-05-12 18:53:48 · 266 阅读 · 0 评论 -
Qt:数据库
打开数据库1. 查看数据库驱动Qsqldatabase::drivers();2. 添加数据库QSqlDatabasebdb = addDatabase("QMySQL", "a");3. 连接数据库db.setHostName("127.0.0.1");setUerName("root");setPassword("123");setDataBaseName("mydatabase");// Sqlite不用设置用户密码4. 打开数据库(即创建连接)db.open();5. 关闭原创 2020-05-12 18:52:53 · 146 阅读 · 0 评论 -
Qt:匿名函数与回调
定义void fun(std::function<void (const QString &)> mycallback) {Qstring str = “hello”;mycallback(str);}调用fun([=](const Qstring str){qDebug() << str;});注意: 不能在 Lambda 表达式里使用对象的成员数据,可能对象已经析构析构。如果要使用它的相关数据,定义一个局部变量来保存其数据,然后在 Lambda 表达式里原创 2020-05-12 18:51:31 · 345 阅读 · 0 评论 -
Qt:网络请求
QNetworkRequest:网络请求QNetworkAccessManager:协调网络操作(发射信号/身份验证请求/代理)QNetworkReply:请求应答信号请求完成触发信号:finished(QNetworkReply*)进度:downloadProgress(qint64, qint64)可读:readyRead()发送请求:get/post步骤1. 创建一个请求QNetworkRequest request;request.setUrl(QUrl(url));2. 创原创 2020-05-12 18:45:18 · 1057 阅读 · 0 评论 -
Qt:坐标/鼠标/触摸
鼠标坐标1. 窗口坐标( 相对于窗口)Qpoint QMouseEvent::pos(); 或 x() 或 y()2. 全局坐标( 相对于屏幕)Qpoint QMouseEvent::globPos(); 或 screenPos();int x = cursor().pos().x(); 或 globalX(); int y = cursor().pos().y(); 或 globalY(); 3. 窗口坐标转全局坐标mapToGlobal()4. 全局坐标转窗口坐标mapFromGlo原创 2020-05-11 22:34:38 · 2310 阅读 · 0 评论 -
Qt:TCP/UDP/组播
模块:networkQTcpServer1. 监听端口:listen(QHostAddress:Any, 8888); // 允许所有IP2. 连接数量:3. 阻塞接收连接:4. 接收到客户端连接:触发信号:newConnect()取出套接字:tcpSocket = tcpserver->nextPending();取出客户端IP:tcpSocket->peerAddress.toString();接收客户端数据:connect(tcpSocket, &QTcpSoc原创 2020-05-11 22:32:25 · 728 阅读 · 0 评论 -
Qt:对话框QMessageBox/QDialog
模态对话框:对话框阻塞,此时只能在对话框操作,不能操作父窗口非模态对话框:可以操作父窗口标准对话框1. 构造函数构建QMessageBox message(QMessageBox::NoIcon, "title", "content", QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); message.setIconPixmap(QPixmap("icon.png")); message.setStyleSh原创 2020-05-11 22:31:27 · 815 阅读 · 0 评论 -
Qt:进程QProcess
启动进程QProcess *process = new QProcess();无参:process->start(“ls”);有参:process->start(“ls -al”);或者QStringList &args;arg << “-al”;process->start(“ls”, args);读写process->write(“xxx\n”);process->setProcessChannelMode(QProcess::Mer原创 2020-05-11 22:29:13 · 320 阅读 · 0 评论 -
Qt:多线程/线程池
QThread1. 继承Qthread2. 重写run()方法3. 启动线程:start()4. 线程结束:发出信号finished()5. 线程退出:quit() (terminate()是直接结束)6. 等待:wait();7. 当前线程ID: QThread::currentThread()8. 休眠:QThread::msleep(1000);注意:只有run函数内部的代码才会执行在新线程里面moveToThread1. MyClass继承Qobjectcalss MyCl原创 2020-05-11 22:28:02 · 387 阅读 · 0 评论 -
Qt:QVariant/json/数据库对象关系映射
C++没有元对象,无法实现json和对象的映射(比如GSon),或者数据库的对象关系映射(比如GreenDao)。C++可以获取变量的字符串(#define name2str(name) (#name))和变量的类型(#define getType(value) typeid(value).name()),但是并没有办法遍历类的成员属性。解决办法是给类添加一个map,在构造函数中实现成员变量名称和成员变量类型的map,但这比较复杂。QT有QVariant,可以很好的实现映射。QVariant与对象cla原创 2020-05-09 16:30:31 · 1483 阅读 · 0 评论 -
Qt:QJson
解析json1. 使用QVariantMap/QVariantList一次性获取键值2. 使用key1.key2.key3……一层层获取值步骤字符串转json文档:QJsonDocument::fromJson对象是什么类型:isNull()/isObject()/isArray()转为对象或数组:toObject()/toArray()QJsonObject对象获取json值是否包含键:contains(“key”)转QJsonValue:value(“key”)或object[“k原创 2020-05-09 15:28:55 · 166 阅读 · 0 评论 -
Qt:QVariant
QVariant 类型充当着最常见的数据类型的联合,包括Qt的数据类型、C++类型、自定义的数据类型。以什么类型存入就以什么类型取出。存入与取出1. Q_DECLARE_METATYPE(MyClass)宏:被QVariant存储的数据类型需要有一个默认的构造函数和一个拷贝构造函数2. 赋值QVariant var=1; 或 var.setValue(1);3. 取值(赋值什么类型就取什么类型) int data=var.toInt();自定义结构体1. 在头文件里面要注册此类属于元类型原创 2020-05-09 14:49:46 · 441 阅读 · 0 评论 -
Qt:数据流
二进制数据流QDataStream1. 读取数据(只读)QFile file("file");QDataStream in(&file, QIODevice::ReadOnly);QString data;in >> data; // 输入流把空格作为数据间的分隔符2. 写入数据(只写)QDataStream out(&file, QIODevice::WriteOnly);out << data;文本数据流QTextStreamQTextStr原创 2020-05-09 14:45:52 · 814 阅读 · 0 评论 -
Qt:文件操作QFile/QDir
/** * @description: 文件信息 * @param {type} * @return: */ void file_info() { QFileInfo info = QFileInfo("filePath"); // 获取路径 QString file_name = info.fileName(); // 文件名 ...原创 2020-05-09 14:18:28 · 412 阅读 · 0 评论 -
Qt:中文乱码
设置字体font.setFamily(“Microsoft YaHei”);font.setPointSize(10);font.setItalic(true); // 斜体font.setBold(true);或QFont font(“Microsoft YaHei”, 10, 75); // 字体(微软雅黑),大小,加粗(权重是75)// 常见权重QFont::Light - 25 高亮QFont::Normal - 50 正常QFont::DemiBold - 63 半粗体QFo原创 2020-05-09 14:15:29 · 281 阅读 · 1 评论 -
Qt:图片修改/缩放/旋转
不同的图片QPixmap:主要用于绘图,针对平台进行优化,和平台相关(依赖于平台的绘图引擎)QImage:和平台无关(使用Qt的绘图引擎),可以对图片像素修改(setPixpel()和pixel())。注意:可以在线程中绘制QBitmap 继承Qpixmap,用于单色(单通道图像,占用内存小)QPicture:保存绘图状态(使用begin()方法在QPicture上进行绘图,end()结束绘图,save()保存至档案,load()加载保存好的档案)简单的:QImage用来加载图像,QPixmap用原创 2020-05-09 14:14:21 · 4293 阅读 · 0 评论 -
Qt:绘图QPainter
更新repaint():立即重绘(立即执行paintEvent())update():不会立即重绘,将重绘事件放入主消息循环中(一般多次调用update()只执行一次paintEvent())绘图事件重写绘图事件void paintEvent(),在事件中绘图,当窗口有变动(文本/大小/隐藏等)时QT自动重绘,也可以手动更新(repaint()/update())void Widget::paintEvent(QPaintEvent *) { QPainter painter; p原创 2020-05-09 13:55:22 · 389 阅读 · 0 评论 -
Qt:配置QSettings
QSettings配置,使用键值对存储数据,键是QString,值是QVariant。QString fileName = QCoreApplication::applicationDirPath() + "/Config.ini";QSettings *set = new QSettings(fileName, QSettings::IniFormat);// 前缀set->beginGroup("AppConfig");// 设置值set->setValue("SaveLog原创 2020-05-09 13:49:25 · 355 阅读 · 0 评论 -
Qt:打印输出
#define LOG qDebug() << __FILE__ << __FUNCTION__ << __LINE__ /** * @description: 日志输出 * @param {type} * @return: */ static void log_out(const QtMsgTyp...原创 2020-04-24 18:44:55 · 762 阅读 · 0 评论 -
Qt:数据类型转换
QString转int: str.toInt()int转QString:QString::number(100)QString转QByteArray:str.toUtf8() UTF8编码,str.toLocal8Bit() unicode编码,str.toLatin1() ascii编码(没中文,所以中文时乱码)QByteArray转QString:Qstring()QString转ch...原创 2020-04-24 18:43:00 · 790 阅读 · 0 评论 -
Qt:定时器
静态方法(触发一次)QTimer::singleShot(1000, this, [=](){});槽函数(触发多次)QTimer *timer = new QTimer(this);connect(timer, QTimer::timeout, [=](){});timer->start(1000);注意:timer->setSingleShot(true); // 触...原创 2020-04-24 18:42:19 · 403 阅读 · 0 评论 -
Qt:CSS设置样式
注意:在qss文件中注释只能用/* */,不能用双斜杠设置样式setStyleSheet(styleSheet().isEmpty() ? “background-color: red” : “”);不同级别的样式setStyleSheet()1. QApplication:对整个应用生效2. QWidget:对当前窗口生效(如果子窗口指定了父窗口,则子窗口使用父窗口的样式)3. 控件...原创 2020-04-24 18:40:23 · 1768 阅读 · 0 评论 -
Qt:CSS样式属性
大小:px颜色:#FF0000/red/rgb(255,0,0)/rgba(255,0,0,255)透明色:transparent/rgba(0,0,0,0)窗口大小min-width: 10px;min-height:10px;max-width: 30px;max-height:30px;width: 20px;height:20px;外间距margin: 10px;m...原创 2020-04-24 18:39:10 · 1180 阅读 · 0 评论 -
Qt:窗口QWidget
Qwidget:所有窗口/控件的基类QMainWindow:自动添加QmenuBar/QtoolBar/QStatusBar/centralWidget常用配置setObjectName("myWidget"); // 名称setWindowFlags(Qt::FramelessWindowHint // 无边框 ...原创 2020-04-24 18:38:20 · 261 阅读 · 0 评论 -
Qt:信号/槽/自定义信号槽/匿名函数
信号1. signal关键字声明(不需要定义):void mysignal();2. 无返回值3. 可重载:void mysignal(int value);4. 发射信号:emit mysignal();/emit mysignal(100);槽1. 使用slots关键字声明2. 成员函数/静态函数、全局函数都可以作为槽函数连接connect1. Q_OBJECT2. 信...原创 2020-04-24 18:36:41 · 3710 阅读 · 2 评论 -
Qt:项目文件pro/pri
pro项目工程文件# 添加模块QT += core gui network sql xml# 高于4版本时,添加widgets模块greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 应用程序名字(编译出来的可执行文件的名字)TARGET = qtDemo# 指定makefile文件类型TEMPLATE = app# c...原创 2020-04-24 18:35:42 · 236 阅读 · 0 评论