未定义标识符 "QMessageBox"
代码是没有错,应该是你没有包函库函数引起的,你在widget.cpp里引入这个类就可以了 #include <QMessageBox> 或者直接用 #include <QtGui> 这样就可以了。
QMessageBox 乱码问题:
代码语言:javascript复制QMessageBox::information(this, "Warning", "请插入U盘"); //会乱码
QMessageBox::information(this, "Warning", QString::fromLocal8Bit("请插入U盘"));//不会乱码
弹出两次的问题:
代码语言:javascript复制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。