Qt控件使用方法技巧合集
~~~~~~~~ 本篇博客代码示例包含C++版本和Python版本,不管是哪个版本,Qt的API都是一样的,使用方式大同小异。
文章目录
- Qt控件使用方法技巧合集
- 1、QTextEdit设置背景色和文本颜色
- 2、QMessageBox的使用
- 3、QComboBox点击事件更新列表
- 4、QTabelView的使用
- 5、Qt关于QDialog右上角显示?按钮不显示最大化、最小化按钮问题
- 6、配置文件QSettings的使用
- 7、获取各种路径
- 8、QLineEdit
- 9、Qt字符串QStrings类使用详解
- 10、调试打印输出QDebug使用详解
- 11、调起窗口的QFileDialog类使用详解
- 12、文件读写QFile使用详解
- 13、打开指定路径并选中指定文件
- 14、QtChart实现动态曲线实时绘制显示
- 15、时间获取(日期时间类:QDateTime)
- 15、状态栏:QStatusBar
- 16、QDialogButtonBox
- 17、Qt | 拖放、拖动的使用、将文件拖入使用示例
1、QTextEdit设置背景色和文本颜色
// 设置QTextEdit背景和字体颜色
QPalette pl = ui->textEdit->palette(); // 获取textEdit的调色板
pl.setColor(QPalette::Base, Qt::black); // 设置背景色为黑色
pl.setColor(QPalette::Text, Qt::green); // 设置文本颜色为绿色
ui->textEdit->setPalette(pl); // 设置回调色板
2、QMessageBox的使用
https://blog.csdn.net/qq153471503/article/details/123423876
3、QComboBox点击事件更新列表
https://blog.csdn.net/qq153471503/article/details/123422722
4、QTabelView的使用
https://blog.csdn.net/qq153471503/article/details/123423931
5、Qt关于QDialog右上角显示?按钮不显示最大化、最小化按钮问题
https://blog.csdn.net/qq153471503/article/details/123424043
6、配置文件QSettings的使用
https://blog.csdn.net/qq153471503/article/details/123424118
7、获取各种路径
获取exe应用程序路径:
QString dir = QCoreApplication::applicationDirPath();
获取当前工作目录:
QString dir = QDir::currentPath();
8、QLineEdit
1、限制只能输入数字和字母
QRegExp regx("[a-zA-Z0-9]+$");
QValidator *validator = new QRegExpValidator(regx, lined);
lined->setValidator(validator);
2、显示最大输入长度为10:
lined->setMaxLength(10);
注意:这个输入长度只是限制的字符个数,例如10就是限制输出10个汉字或者10个ASCII字符,或者混合。
3、设置占位符文本
ui->lineEdit->setPlaceholderText(tr("请在此处输入文本"));
9、Qt字符串QStrings类使用详解
QString的使用是比较简单的,这里只讲格式化操作的API。
格式化函数arg
示例:
QString str(tr("%1 %2 %3 %4").arg(1).arg("hello").arg(3).arg("world"));
qDebug() << str; // 这里输出:"1 hello 3 world"
使用%N
的方式确定是哪一个参数,arg最大只能支持10个。
还有一个是静态函数:QString::asprintf()
,这个函数跟C语言的sprintf函数是一样的。
10、调试打印输出QDebug使用详解
使用qDebug可以将调试信息输出到控制台上,该函数使用方式有两种:
- 将字符串参数给qDebug,例如
qDebug("test");
,这种使用方法可以不用添加头文件#include<QDebug>
,并且这种使用方式是支持格式化打印的,例如:qDebug("count = %d", count);
,这种使用方式类似C语言的printf。 - 使用流式输出多字符串,例如
qDebug() << "test" << "time";
,这种使用方式需要添加头文件#include<QDebug>
补充:当使用release进行最终打包发布时,如果想要显示控制台输出,可以在.pro文件中添加一行CONFIG += console
,然后在这里勾选Run in terminal
:
11、调起窗口的QFileDialog类使用详解
该类的静态函数如下:
比较常用的三个:
- getOpenFileName:获得打开的文件名
- getOpenFileNames:获得多选打开的文件名
- getSaveFileName:获得保存文件名
12、文件读写QFile使用详解
1、文本读写
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/test.txt");
if(!file.isOpen())
{
if(!file.open(QFile::ReadWrite))
{
return a.exec();
}
}
file.write("hellworld");
file.seek(0);
QByteArray data = file.readAll();
qDebug() << data;
return a.exec();
}
2、二进制文件读写
读写二进制文件需要用到QDataStream,示例代码如下:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/test.bin");
if(!file.isOpen())
{
if(!file.open(QFile::ReadWrite))
{
qDebug() << "文件打开失败!";
return a.exec();
}
}
char buf[] = {0X61,0X62,0X63,0X64};
char readbuf[10];
QDataStream ds(&file);
ds.writeRawData(buf, sizeof(buf));
file.flush(); // 执行此句才会真正的写入
file.seek(0);
memset(readbuf, 0X00, sizeof(readbuf));
int nread = ds.readRawData(readbuf, sizeof(readbuf));
if(nread > 0) // 读取成功
{
qDebug() << "实际读取到"
<< nread
<< "个字节"
<< readbuf;
}else if(nread == 0)
{
qDebug() << "未读取到有效内容!";
}else
{
qDebug() << "读取失败!";
}
file.close(); // 关闭文件中包含了file.flush()
return a.exec();
}
13、打开指定路径并选中指定文件
只打开一个目录:
// 打开应用程序所在目录
QDesktopServices::openUrl(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/"));
打开一个目录并选中文件,示例代码:
QString filename = QCoreApplication::applicationFilePath();
QProcess process(this);
QString cmd(tr("explorer /select, \"%1\"").arg(filename.replace("/", "\\")));
process.startDetached(cmd);
代码解释:explorer /select [文件名]
这一句是windows的命令行,意思是启动资源管理器并选中文件,这里我们利用QPocess类去执行这一条命令就是实现打开该文件目录并选中。
14、QtChart实现动态曲线实时绘制显示
https://blog.csdn.net/qq153471503/article/details/122078179
15、时间获取(日期时间类:QDateTime)
QDateTime类提供了很多静态函数,如获取本地时间currentDateTime
,获取UTC时间currentDateTimeUtc
、获取自1970年开始到现在的秒数currentSecsSinceEpoch
,或毫秒数currentMSecsSinceEpoch
。
所有静态函数如下图所示:
QDateTime还提供了toString方法,可以将获取到的时间格式化成你想要的格式,示例如下:
QString currTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss:zzz");
qDebug() << currTime;
结果输出:“2022-11-04 08:49:01:960”,最后的数字是毫秒。
15、状态栏:QStatusBar
窗口左下角显示消息,showMessage函数可接收两个参数,第一个参数是要显示的文本,第二个参数是显示时间:
ui->statusBar->showMessage("我是消息!");
默认显示的消息是在左下角的,如果想要在右下角显示,那么需要在QStatusBar上新增一个label:
QLabel* label = new QLabel(this);
ui->statusBar->addPermanentWidget(label);
label->setText("我是label");
16、QDialogButtonBox
见此博客:https://blog.csdn.net/qq153471503/article/details/127800435
17、Qt | 拖放、拖动的使用、将文件拖入使用示例
见此博客:https://blog.csdn.net/qq153471503/article/details/127807873
ends…