Articles of qt

如何欺骗Windows认为你的应用程序仍然很忙,尽pipe它没有响应

我的应用程序是一个窗口应用程序,执行某些复杂的mathalgorithm。 因为我很久以前就开始使用该应用程序,所以大部分仍然是单线程的。 更确切地说,主线程执行所有复杂的计算逻辑。 在计算过程中,我提到在屏幕上显示一些进展是很重要的。 在大多数情况下,mathalgorithm只需要几秒钟,因此在用户启动操作之后,会显示一个沙漏(或Windows 7中的运行圆),几秒钟后显示结果。 在某些情况下,algorithm可能需要几分钟的时间。 在这段时间里,我显示沙漏,algorithm很忙,我在窗口中显示进度。 但是,如果用户在忙了一段时间之后点击应用程序,则窗口变得“更白”(就像在窗口上放置了不完全透明的塑料片一样),窗口不再被更新,并且Windows报告“该应用程序没有响应”。 我使用Qt,我使用Qt函数QWidget :: repaint强制重绘,而我的algorithm是繁忙的。 重绘工作一段时间,但如上所述,Windows似乎阻止了一段时间后。 什么是正确的方式告诉Windows,你的应用程序仍然忙,这样的窗口不断更新? 如果我input一个显式的消息循环,用户可能会在应用程序中触发其他不需要的操作。 调用PeekMessage足够了吗? 调用GetMessage就足够了? 还是应该调用DispatchMessage? 如何防止用户启动另一个操作(实际上是阻止所有的用户input) 每次更新我的窗口时,是否应该调用其中的一条消息,还是我可以限制自己每隔几秒钟调用一次(10秒?,30秒?) 请注意,将计算逻辑移至单独的线程当前不是一个选项。 我在Windows 7上使用Visual Studio 2010,并结合使用Qt 4.7。

Qt禁用Windows 10游戏栏

我有一个在Qt中开发的应用程序,使Windows 10认为它是一个游戏,并打开一个popup框,说Press the Win-key + G to open the Game bar. 这是非常无益的,因为我的申请不是游戏; 并干扰用户体验。 如何从我的应用程序代码中closures此function? 我一直无法find任何相关的文件。 提前致谢。

在QtCreator中导入一个CMake项目

我试图导入我的Cmake项目在QtCreator中,我想用作代码编辑器,但与Qt类完成的可能性通过Ctrl + R构build 当导入Cmake项目时,当我尝试selectRunCmake时,QtCreator ide在运行CMakeWizard时挂起。 如果我取消一个空的窗口popup,并没有生成项目。 是否有可能在QtCreator中导入现有的cmake项目? Ubuntu 10.10 x86_64,QtCreator 2.6

Linux fork / exec到同一个目录下的应用程序

是否有一个exec变体,将使用当前的应用程序目录来定位目标程序? 我正在使用C ++和Qt来实现“最后的沟渠”错误报告系统。 使用Google Breakpad ,我可以创build一个小型转储并直接执行到一个处理程序。 因为我的应用程序处于不稳定状态,所以我只想使用最小的依赖关系来分叉并启动一个单独的error handling过程。 错误报告应用程序将被部署在与应用程序可执行文件相同的目录中。 我很不熟悉fork和exec选项,并且没有find包含searchpath中当前应用程序目录的exec选项。 这是我到目前为止: static bool dumpCallback(const char* /*dump_path*/, const char* /*minidump_id*/, void* /*context*/, bool succeeded) { pid_t pid = fork(); if (pid == 0) { // This is what I would *like* to work. const char* error_reporter_path = "error_reporter"; // This works, but requires hard-coding the entire […]

为Qt应用程序创buildLinux安装

我只是用Qt Creator做了一个很棒的程序。 我对自己很满意。 如何将其从桌面移动到笔记本电脑? 那么,最好的方法是安装程序? 而对于Ubuntu,这是一个debian包吗? 我怎么做? 有人这样做,他们可以共享QT 4.5的模板文件吗? 谢谢, 麦克风

如何为QtWebKit安装一个插件

我正在运行一个Qt 4.5商业快照,并希望在我的QWebView使用我下载的一个插件(这是一个.so文件)。 有一个特定的位置,我需要放置这个文件? 我可以用QWebPluginFactory抓取它吗?

Qt的最好的方式来显示非常大的富文本?

我需要显示非常大的日志,使用HTML标记标记不同types的数据。 使用QTextEdit和QTextBrowser真的会减慢应用程序,特别是在追加操作。 我真的想保持QTextEdit界面和能力。 我见过一些实现了自己的TextEdit风格的人来提高性能,但是如果有人使用“Qt”工具解决了这个问题的话,我会徘徊不前。 我想过使用Model / View框架来根据需要加载数据,但这不像我想的那样。 也许inheritanceQTextEdit并覆盖一些插槽滚动… 如果有人遇到这个问题,并解决它,我将不胜感激一些提示。 谢谢。

Qt线程在Linux中的问题

在我的项目中,我一直在用Qt开发一段时间,现在我们开始转向更线程化的devise。 在将一些GL渲染小部件移动到其他线程时,我发现了一些非常奇怪的行为。 看来,如果一个GL Widget从另一个线程(boost线程或QThread)开始更新,然后接受用户input(如QTextEdit)的部件抓住焦点,我会看到如下所示的XCB崩溃: [xcb] Too much data requested from _XRead [xcb] This is most likely caused by a broken X extension library [xcb] Aborting, sorry about that. hypnotizer: ../../src/xcb_io.c:735: _XRead: Assertion '!xcb_xlib_too_much_data_requested' failed. 为了testing这个,我实际上可以对GLHypnotizer演示进行简单的修改来重现崩溃。 该演示可以在这里find: http ://qt-project.org/doc/qt-4.8/demos-glhypnotizer.html [qt-project.org] 如果我添加行“mdiArea.addSubWindow(new QTextEdit(this));' (在调用newThread()之前),然后当演示开始时,将会有一个QTextEdit和一个GL Hypnotizer Widget。 如果我然后点击QTextEdit抓住焦点,我会每次都得到上面的崩溃。 任何人都可以重新使用上述说明在Linux上安装错误? 有没有人在Linux上使用Qt和线程之前遇到这些types的问题? 注意:我正在使用Ubuntu 12,这个崩溃发生在VirtualBox和非VirtualBox Ubuntu安装中

设置QGroupBox标题的alignment方式

我尝试以编程方式设置QGroupBox的标题alignment方式。 根据文档,我尝试按照以下方式进行: MainWidget::MainWidget (QWidget * parent) : QWidget (parent) { setWindowTitle (tr ("QGropBox Title Alignment issue") ); QGroupBox * group = new QGroupBox ("Group Title", this); QVBoxLayout * layoutTop = new QVBoxLayout (); layoutTop->addWidget (group); group->setAlignment (Qt::AlignHCenter); this->setLayout (layoutTop); } 但是我得到了意想不到的结果,并且标题与组框左侧一致。 我对环境有这样的行为: Debian 9.0(sid); Qt 5.5.1(从仓库安装); XMonad DE。 我对下一个环境也有同样的行为: Ubuntu 15.10; Qt 5.4(使用offline-installer手动安装); KDE。 但! […]

cachingGoogle Map最初在浏览器中显示较小

这是来自软件的caching地图: ogmaps 请仔细看看主窗口地址栏下面的小阴影。 一旦点击最小化/最大化button,就会显示完整。 在Firefox上testing,谷歌浏览器。 不能说这是浏览器问题,因为当我在Qt小部件上加载这个caching的地图时,我仍然不得不点击最小化/最大化button,以使它完全显示出来。 地图的html太长,无法在这里发布。 如果您有任何相关的部分,请告诉我,我会在这里发布。 编辑2 最后我设法在这里上传这个html代码: http : //code.google.com/p/earthhtml/source/browse/trunk/ogmap.html 请看看div标签。