QT技巧汇总

本文分享了Qt编程中的实用技巧,包括组件尺寸调整、信号槽机制优化、文本颜色修改、16进制字符串输出等,同时解决了常见的错误如multiple definition of qMain问题,适用于初学者和有经验的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置组件随窗体变化自动调整大小

有两个方法:

  1. 在ui设计器里面,对整个窗口应用布局模式。各个组件会根据布局模式自动调整位置。
  2. 在主窗体构造函数中,使用
setCenterWidget(ui->component);

来设置居中组件。居中组件会铺满窗口,并随窗体大小自动变换。这种方式参数不能是布局类型(如VerticalLayout对象),但可以是splitter对象。

这里设置的是窗体的中心组件,所以是this->setCenterWidget,而不是ui->setCenterWidget

设置组件最大、最小宽度

设置了组件最大、最小宽度,可以使得窗体变化时,固定某些组件大小,而不随窗体大小变化。

组件留白

使用HorizontalSpacerVerticalSpace可以为组件上下左右留白,当窗体发生变化时,留白会顶着组件,使得多个组件之间的间隔不发生变化

error: multiple definition of qMain(int, char**)


解决办法:导致该问题的原因是,项目的.pro文件频繁改动,项目中代码文件频繁添加删除,导致.pro中产生了文件的重复引用,如图:
重复文件
删除重复文件,即可通过编译。

QLineEdit 设置只能输入数字

ui->editRecvPort->setValidator(new QIntValidator(1025, 65000, this));

获取SIGNAL发送者

当用同一个SLOT开响应不同源的同一个/不同个SIGNAL时,需要得到当前的发送者,来进行区别处理
*在SLOT函数调用sender()函数,返回的就是当前消息发送者的QObject对象,根据需要强转为需要的对象
*更进一步,在适当的时机为发送者调用setObjectName(QString)函数,在SLOT函数中通过sender()获取发送者指针后,调用objectName()返回设置的字符串,可以进一步判断对象是谁

修改文本颜色

QPalette palette = ui->textRecvGps->palette();
palette.setColor(QPalette::Text, Qt::green);
ui->textRecvGps->setPalette(palette);
ui->textRecvGps->appendPlainText(msg);

这种方式修改的是整个文本框中的文字颜色,所以如果想给部分文字修改颜色,需要用下面的方式:

ui->textRecvGps->appendHtml("<font color=green>"+msg+"</font>");

但是要注意,在msg中如果有<>会导致解析失败,需要用HTML特殊字符替换,即<替换为&lt;>替换为&gt;

输出16进制字符串

如果想把QString字符串输出为十六进制,可以用如下代码:

QString normalStr = 'abc';
QByteArray hexByte(normalStr);
hexByte.toHex();

如果想把网络收到的字节流(保存在QByteArray中)输出十六进制查看,也可以用这个方法

为函数添加快速注释

打开工具->文本编辑器->片段, 组选择C++, 添加一个片段, 比如名字是fun, 触发种类是这个片段的简单描述. 具体片段可以如下:

/**
  * @brief $name$
  * @param $param$
  * @author bailiang
  * @date $date$
  */
$ret$ $name$($param$)
{
    $$
}

当我们在代码文件中键入fun时, 会自动弹出智能提醒, 选择我们的代码片段回车, 出现下面的代码:
在这里插入图片描述
tab可以在变量间切换, 输入完成后回车, 完成编辑

为新建类添加快速注释

和函数一样.
需要注意的是, QT没有像IDEA那样在代码模板里用Java库函数填充变量、不需要手动输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值