Qt进阶
十亦山雨
共同进步。
展开
-
Qt进阶-QTableView表格进阶功能1
本文展示的功能是类似与Photoshop的通道选择,具体展示如下:具体功能有:1.第一列显示眼睛图标,第二列显示各通道的缩略图,第三列显示文字;2.点击眼睛图标切换当前行的选中状态,点击后两列显示当前图像3.RGB选中时R、G、B通道均选中4.R、G、B通道均选中时选中RGB...QLabel m_eyeLabels[4]; //表格的第一列图标,眼睛QLabel m_imgLabels[4]; //表格的第二列图标,各通道缩略图QStandardItemModel原创 2021-08-19 16:06:57 · 720 阅读 · 0 评论 -
Qt进阶-只改变QGroupBox的标题栏字体而不改变内部的字体
Qt进阶-只改变QGroupBox的标题栏字体而不改变内部的字体通常情况下,在属性编辑器中设置QGroupBox的字体,QGroupBox的标题栏和内部控件的字体会同时改变如果只想改变标题栏字体而不改变内部控件字体,可参考以下步骤:右键QGroupBox,打开“改变样式表”;将以下代码写入样式表中并应用,但是此时标题并不会改变;QGroupBox::title{ font-size: 13px; font-weight: bold; }此时再通过属性编辑器中设置的字体设置即原创 2021-07-22 09:51:27 · 3332 阅读 · 1 评论 -
Qt进阶-设置应用程序默认字体
VS+Qt应用开发-设置应用程序默认字体//应用程序对象,有且只有一个QApplication a(argc, argv);//设置应用程序字体QFont f(QString::fromLocal8Bit("仿宋"), 12); //修改整体字体a.setFont(f);//进入消息循环return a.exec();注意:QFont定义字体时如果是中文名称,则要考虑字符的中文问题如在前面有定义如下指令:#pragma execution_character_set("utf原创 2020-10-24 11:07:15 · 2478 阅读 · 0 评论 -
Qt进阶-汉字转拼音/全拼
Qt进阶-汉字转拼音/全拼加载拼音文件加载简拼数组汉字转拼音汉字转全拼拼音字符加载拼音文件因为拼音字符太长,直接在代码中赋值会超过编译器限制,所以需要放到文件中加载,将文末的拼音字符粘贴到ChineseToPinyin.txt中QStringList listPY; //拼音列表//从配置文件读取拼音数组QFile file("./ChineseToPinyin.txt");if (file.open(QFile::ReadOnly | QFile::Text)){ QStrin原创 2021-07-02 14:36:18 · 26473 阅读 · 0 评论 -
Qt进阶-TCP网口通信
Qt进阶-网口通信获取当前IP获取当前IPQList<QHostAddress> addressList = QNetworkInterface::allAddresses(); //获取所有的网络列表QString IP = "";for each(QHostAddress address in addressList){ //获取Ipv4网络,并且非空且不等于127.0.0.1 if (address.protocol() == QAbstractSocket::IPv4原创 2021-07-02 12:42:31 · 1963 阅读 · 0 评论 -
Qt进阶-鼠标拖动移动窗体
Qt进阶-鼠标拖动移动窗体正常情况下,鼠标拖动标题栏才能移动窗体,如果想拖动窗体内部移动或者窗体为无边框,可通过鼠标事件移动窗体:ui->widget->installEventFilter(this); //注册事件过滤器//事件过滤器bool Widget::eventFilter(QObject *watched, QEvent *event){ static bool isMousePressed = false; //鼠标是否按下 static QPoint mo原创 2021-06-30 10:12:04 · 745 阅读 · 0 评论 -
Qt进阶-事件过滤器eventFilter的使用
ui.pushButton->installEventFilter(this); ui.pushButton_2->installEventFilter(this);bool QtTest::eventFilter(QObject *w, QEvent *e){ if (e->type() == QEvent::MouseButtonPress) { QString a = w->objectName(); int b = 1; return 0; }原创 2021-06-30 09:51:05 · 603 阅读 · 0 评论 -
Qt进阶-绘制一个电池
说明:MyBattery类继承自QWidget,在界面添加一个widget控件,提升为MyBattery类,将滑动条的valueChanged事件与sls_setValue()槽绑定。borderWidth = 5; //边框宽度borderRadius = 5; //边框倒角currentValue = 0; //当前电量alarmValue = 30; //电池电量警戒值bgRadius = 5; //背景电量倒角alarmColo原创 2021-06-29 19:38:11 · 594 阅读 · 0 评论 -
Qt进阶-图片(文本)与base64编码互转
Qt进阶-图片/文本与base64编码互转图片转base64base64转图片文本转base64base64转文本图片转base64QString imageToBase64(QImage image){ if (image.isNull()) { return; } QByteArray imageData; //保存图片数据的字符数组 QBuffer buffer(&imageData); //将字符数组与buffer缓存区绑定,以便写入数据 image.save原创 2021-06-29 14:21:58 · 1223 阅读 · 0 评论 -
Qt进阶-显示当前时间及应用程序运行总时间
Qt进阶-显示当前时间及应用程序运行总时间首先在界面上拖入一个QLabel控件(label_totalTime)、一个QLCDNumber控件(lcdNumber),参考代码如下:QDateTime startTime; //开始计时的时间QDateTime currentTime; //当前时间QString strInterval; //运行总时间QTimer m_tUpdateTime; //定时器void init(){ startTime = QDateTime原创 2021-06-22 12:49:55 · 2271 阅读 · 0 评论 -
Qt进阶-获取程序的编译时间
QString dateTime = __DATE__;dateTime = QLocale(QLocale::English).toDateTime(dateTime, "MMM dd yyyyhh:mm:ss").toString("yyyy.MM.dd");QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss");原创 2021-06-21 19:49:52 · 1565 阅读 · 0 评论 -
Qt进阶-设置应用程序启动画面
在打开程序时如果有耗时的操作,可以显示一个启动画面,表示软件已经在打开中。int main(int argc, char *argv[]){ QApplication a(argc, argv); QPixmap pixmap(":/QtTest/Resources/1.jfif"); QSplashScreen *splash = new QSplashScreen; splash->showMessage("程序启动中...", Qt::AlignLeft, Q原创 2021-06-21 18:52:23 · 479 阅读 · 0 评论 -
Qt进阶-应用程序只允许运行一个实例(共享内存)
Qt基础-应用程序只允许运行一个实例使用Qt开发的应用程序默认可以打开多个实例,但若要只允许打开一个实例,可参照以下方法:#include <QtWidgets/QApplication>#include <QSharedMemory>#include <QMessageBox>#pragma execution_character_set("utf-8") //防止中文乱码int main(int argc, char *argv[]){ QApp原创 2020-12-16 18:48:50 · 1238 阅读 · 0 评论 -
Qt进阶-QProcess进程类打开Windows系统工具
VS+Qt应用开发-打开Windows系统工具添加头文件#include <QProcess>在按钮的槽函数中使用Qprocess的函数start()实现:打开计算器QProcess *poc = new QProcess;poc->start("C:\\Windows\\system32\\calc.exe");打开绘图板QProcess *poc = new QProcess;poc->start("C:\\Windows\\system原创 2020-10-15 21:16:14 · 1464 阅读 · 0 评论 -
Qt进阶-阻塞/非阻塞延时
阻塞延时:阻塞当前进程,直到延时结束,方可进行其他操作(此时如果有界面,界面会卡住)方法1:QThread::msleep(2000);方法2:void sleepMsecSuspend(int msec){ QTime curTimer = QTime::currentTime(); QTime nowTimer; do { nowTimer = QTime::currentTime(); } while (curTimer.msecsTo(nowTimer) <.原创 2021-04-20 21:04:15 · 3952 阅读 · 1 评论