Qt一些不起眼但很实用的小技巧汇总

编程入门 行业动态 更新时间:2024-10-24 20:12:04

Qt一些<a href=https://www.elefans.com/category/jswz/34/1767245.html style=不起眼但很实用的小技巧汇总"/>

Qt一些不起眼但很实用的小技巧汇总

1.QProgressBar(进度条控件)

当将进度条控件的最大值、最小值都设置为0时,可以显示忙碌状态,从而替代百分比表示的进度。这在某些情况下,非常有用,例如:当用QNetworkAccessManager从远端服务器下载某个文件,而不知道文件多大、不知道要下载多久才能下载完成时,设置为忙碌状态就非常适用。如下为进度条忙碌状态:

 实现代码如下:

// m_pProgressBVar为进度条控件
m_pProgressBVar->setMaximum(0);
m_pProgressBVar->setMinimum(0);

2.QLineEdit(编辑框控件)

2.1.setClearButtonEnabled函数

// m_pLineEdit为QLineEdit
m_pLineEdit->setClearButtonEnabled(true);

如上面代码,通过调用单行编辑框控件的setClearButtonEnabled方法,且向该方法传递true参数,当编辑框文本不为空时,则编辑框右边会出现一个圆形叉号,点击该叉号会清除文本;当编辑框没有文本时,右边圆形叉号不会出现。如下:

2.2. setInputMask 函数

通过 setInputMask 函数设置掩码,如设置IP,如下代码可以设置IP:

ipLineEdit->setInputMask("000.000.000.000;0");
maskLineEdit->setInputMask("000.000.000.000;0");
gatewayLineEdit->setInputMask("000.000.000.000;0");
dnsLineEdit->setInputMask("000.000.000.000;0");

 效果如下:

具体参见:利用QLineEdit的setInputMask函数和正则表达式显示IP地址_荆楚闲人的博客-CSDN博客 

 3.利用QMetaObject::Connection和disconnect函数直接断开信号槽

如下为connect函数:

[static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

 某些情况下,我们需要断开原来已经连接的信号槽,否则对同一对象的同一信号调用N次connect,则会发送N次信号,也就是槽函数会进入N次,这可能不是我们想要的结果,具体参见:

槽函数会被执行多次的问题原因及解决方法    博文。

调用disconnect函数可以断开原先的信号槽,其是connect的逆函数。disconnect函数有6个,如下:

[static] bool QObject::disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
[static] bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
bool QObject::disconnect(const char *signal = nullptr, const QObject *receiver = nullptr, const char *method = nullptr) const
bool QObject::disconnect(const QObject *receiver, const char *method = nullptr) const
[static] bool QObject::disconnect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
[static] bool QObject::disconnect(const QMetaObject::Connection &connection)

前5个函数的用法,请自行查阅Qt Assist。后面这个用法很方便,参数是从connect函数的返回值,你可以认为是一个唯一id,如下代码就可以取消信号槽连接:

QMetaObject::Connection connectId = QObject::connect(...); // 相关参数,请自行根据自己业务传递
QObject::disconnect(connectId); // 断开连接

未完,待续,后期工作用到后再继续写!

更多推荐

Qt一些不起眼但很实用的小技巧汇总

本文发布于:2024-02-11 18:13:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682516.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不起眼   小技巧   但很   Qt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!