QT QMessageBox 问题

时间:2022-07-23
本文章向大家介绍QT QMessageBox 问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

未定义标识符 "QMessageBox"

代码是没有错,应该是你没有包函库函数引起的,你在widget.cpp里引入这个类就可以了 #include <QMessageBox> 或者直接用 #include <QtGui> 这样就可以了。

QMessageBox 乱码问题:

QMessageBox::information(this, "Warning", "请插入U盘"); //会乱码 
QMessageBox::information(this, "Warning", QString::fromLocal8Bit("请插入U盘"));//不会乱码

弹出两次的问题:

void on_checkBox_clicked(); 
 void on_checkBox_2_clicked();  
 void on_pushButton_clicked();
 //这些如果是这种形式的信号定义,则不需要写connect函数,其实也不用在设计师中连接信号与槽  
 //如果不是这样定义的就必须写connect,可以通过在设计师中连接信号与槽自动生成connect

如果已经按照如上方式定义,则不需要在qt中建立信号与槽的连接,不然就会触发两次.

如果用on_XXX_clicked()定义槽,Qt的元对象QMetaObject会自动的寻找相关的信号并链接,不能再用connect()链接了,否则就会连接两次。

void QMetaObject::connectSlotsByName ( QObject * object ) [static] 这个也是QT提供的自动绑定机制 如果你调了这个 也会出现递增执行次数的情况。

结论:

如果想用connect()来连接信号和槽,就不要使用形如on_XXX_XXX的槽。否则就不要connect。