【发布时间】:2015-04-15 09:41:16
【问题描述】:
我是一个初学者“程序员”,我使用引号是因为我是绿色的。
Windows 7 64 位
代码::块 13.12
OpenCV 2.4.10
Qt 4.8.5
我一直致力于单枪匹马地创建一个(对我而言)相当大的软件,该软件使用 OpenCV 和 mingw 来跟踪几个不同标记的移动并计算(并准确猜测......)很多东西.我快完成了,但是我必须在其中加入一些 GUI 元素,最重要的是一个对话框窗口,您可以使用它来查找文件(昨天出现)。所以我尝试使用 Code::Blocks 设置 Qt 并创建一个基本的 Hello World 应用程序。我已经设置了 env Path 变量,我已经将链接器和编译器搜索目录指向了它们应该在的位置。它仍然不起作用。
#include <QApplication>
#include <QFont>
#include <QPushButton>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QPushButton quit("Quit");
quit.resize(75, 30);
quit.setFont(QFont("Times", 18, QFont::Bold));
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
quit.show();
return app.exec();
}
这就是我想要运行的东西。编译正常,没有错误或警告。但是当我运行它时,它立即停止工作,如“Qt.exe 已停止工作”并且进程返回 -1073741819 ...它在尝试执行特定于 Qt 的操作时崩溃(QApplication ...)
我在QApplication app(argc, argv);之前添加了一个简单的cout << "Hello world";,它显示在控制台中,然后停止工作。
即使我将代码暴露到 QApplication app(argc, argv);
return app.exec();
它仍然以同样的方式崩溃。
我的第一个问题......可能是什么问题?我的想法用完了,谷歌也不想帮助我。我试过使用 Qt Creator,它工作得很好,但我无法让它工作......它只会在控制台中打印“Naci”,不管我试图运行什么项目,而且我有不知道“Naci”是什么以及它来自哪里。
PS:还有一个问题。是否可以创建一个控制台应用程序,该应用程序在某一时刻调用具有 QDialog 窗口并从中获取文件名的函数?
编辑: 我正在尝试运行附加到 Qt 版本的示例。它们都给了我对 vtable 错误的未定义引用,而且我在工作中找不到任何解决方案。耶稣……这对新人不友好 edit2:我要重建和重新配置 Qt...在我的 1ghz 上网本上可能需要一段时间...
【问题讨论】:
-
我从来没有见过任何
QWidgets被使用(在你的情况下是按钮)而不将它们放在QMainWindow中。我不确定这是否可行,但我建议在小时候创建一个带有按钮的QMainWindow。在示例中也应该是这样的。 -
关于创建 QDialog 窗口我认为是可能的。对于 Linux,我可以
fork()控制台应用程序将 QDialog 作为子进程。然后通过pipe()将文件名发送回父进程“控制台应用程序”,但对于 Windows 可能可以通过CreatProcess()。 -
您是否将 Qt dll 库复制到构建文件夹中?它们是运行任何 Qt 应用程序所必需的。你有波兰语的 QtCreator。在控制台中,它会打印该应用程序已结束,您需要按 Return 以关闭控制台。由于波兰字母“ś”,控制台删除了其余文本“Naciśnij Return aby zamknąć”
-
您的代码对我有用,但我使用的是 Qt5 和 QtCreator。
-
@firescreamer - 这很有趣。但是,这仍然意味着整个代码都被忽略了,不是吗?复制 dll 库没有帮助。如果它们丢失,错误会不会有所不同?
标签: c++ qt crash codeblocks