回复: QT错误集成大全
#6 [ktl123 12-02 19:14]
QT错误调试总结
1.编译时出错,多为语法错误,根据错误提示逐条修改
2.链接时出错,表现为“ld returned 1 exit status”, 说明不同文件(类)之间的调用有问题或是有函数在头文件中声明了但没有定义。如果是交叉编译,可能是缺乏必要的依赖库cannot find -lxxx详见
3.运行时出错,表现为“xxx.exe”遇到错误需要关闭,通常是变量没有初始化,引起了内存问题。如果两个类互相包含,会造成程序无法运行,终止后显示exit with code 1
Cannot retrieve debugging output!
这个问题是个小问题,其实跟程序没关系。当你开多个Qt程序(编程软件)执行程序后。且有2个以上程序用qDebug()输出时,第一个程序能输出qDebug中的内容,而当你开第2个程序就会出现上面问题。交替执行就能看出问题来了。
#7 [ktl123 12-03 15:05]
最近用相对路径 资源必须在资源文件夹,否则访问失败
实际测试只要在main 函数添加下面依据 即可
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget *widget = new Widget;
QDir::setCurrent(app.applicationDirPath());//添加这句 立马可以
widget->show();
return app.exec();
}
#8 [ktl123 12-11 16:56]
编译报错内容:
Compile++ thumb: cocos2dcpp_shared
#9 [ktl123 12-11 16:58]
我是该个用记事本打开重新保存 错误消失
#10 [ktl123 12-12 17:34]
问题描述:界面线程MainApp为主线程,工作线程MyThread为一子线程,从工作线程向主线程传递字符串用于在主线程中显示。
Qt的信号与槽机制可以将任何继承自QObject类的对象捆绑在一起,使不同对象之间能够相互通信。
成功的实现Qt线程间的信号与槽:
工作线程:
class MyThread:public QThread
{
Q_OBJECT
...
signals:
void MsgSignal(const QString& tep);//用于向主线程传递字符串
protected:
void run();//run 中的内容才是子线程中执行的内容!
}
void MyThread::run()
{
Sleep(3000);//头文件:windows.h
QString tep("mou-mou-mou");
emit MsgSignal(tep);
Sleep(3000);//各个Sleep的位置可放置具体执行的工作
}
主线程:
class MainApp:public QWidget
{
Q_OBJECT
...
public:
MainApp();
...
private slots:
void OnMsgSignal(const QString& tep2);//接受子线程传递字符串用于显示
private:
MyThread* m_thread;
}
MainApp::MainApp()
{
...
m_thread= new MyThread();
connect(m_thread, SIGNAL(MsgSignal(const QString&)),
this, SLOT(OnMsgSignal(const QString&)));//此处connect的第五个参数默认变成Qt::QueuedConnection
m_thread->start();
}
void MainApp::OnMsgSignal(const QString& tep2)
{
//使用子线程传递来的tep2
}
实现过程中遇到过的问题:
1.connect函数的第五个参数代表信号与槽的连接模式,线程间的信号与槽不能使用Qt::DirectConnection直接连接方式,因为它要求在发信号的线程内执行槽函数。而Qt::QueuedConnection队列方式将信号转换成事件发送到槽函数所在线程的消息队列中让槽函数所在线程来处理,可以实现线程安全的线程间的通信。这样的时效性也不差,上面的实现中,会在子线程“run()”函数中的第二个Sleep之前执行主线程的“OnMsgSignal(constQString& tep2)”。
Qt线程间的信号与槽于是在调试的时候子线程的“emit MsgSignal(const QString& tep);”的下一步并不会立即跳转到主线程的“OnMsgSignal(const QString& tep ..