草庐IT

QT多线程

全部标签

c++ - Qt widget 背景从 Linux 到 Windows 不同

我要实现一个跨平台的Qt程序。我有一个我不明白的问题:当程序在Windows上执行时,某些小部件的背景颜色不正确。首先,我用C++编写的程序得到了完全相同的结果,所以我认为这不是Python特有的问题。我将我的代码简化为一个显示“错误”的简单程序。我不确定是哪个小部件导致的,所以我简单地包含了实际程序中使用的所有元素。这是它在Linux上的样子:这是背景错误的Windows渲染:代码如下:importsysfromPyQt4.QtGuiimportQApplication,QMainWindow,QVBoxLayout,QTabWidget,QWidget,\QGroupBox,QVB

c++ - Qt 中基于范围的循环出错

获取这些错误:C2143:syntaxerror:missing','before':'C2143:syntaxerror:missing';'before'{'代码如下:voidMainWindow::PrintDir(constQString&str){QDirmDir(str);QStringbuffer;for(QFileInfotemp:mDir.entryInfoList())//firsterror{//seconderrorbuffer+=temp.absoluteFilePath()+"\n";}ui->textEdit->setText(buffer);}我猜原因是

c++ - 在 Windows 上使用 WaitForSingleObject 但支持 boost 线程中断

Boost线程具有“可中断”的便利特性。该框架在您sleep等时引入了中断点。但是,使用阻塞Win32调用可以规避此功能。例如,WaitForSingleObject会阻塞一个线程,但不会让它被boost线程的中断机制打断。有什么方法可以包装WaitForSingleObject或告诉boost等待Win32事件句柄,以便我可以重新获得中断点? 最佳答案 detail::win32::interruptible_wait实现了这一点。如您所见,它等待3个句柄(除了调用者指定的句柄之外还有2个)以接受中断。具体看WaitForMult

windows - 如何识别 Qt 应用程序/小部件何时被拖过监视器

我基于Qt的应用程序有一个QMainWindow和另一个模态小部件。此模态小部件没有恢复选项。当有多个显示器可用时,允许用户在显示器之间拖动此小部件。但是,当我的小部件很大并且用户将其拖到扩展显示器(通常是分辨率非常低的投影仪)时,小部件对于屏幕而言太大并被剪切。我希望能够检测到用户何时移动到不同的屏幕,以便我可以调整小部件(及其中的内容)的大小以适应新屏幕的尺寸和分辨率。Qt是否为此发出任何信号? 最佳答案 这可能是您正在寻找的函数调用:http://qt-project.org/doc/qt-5/qdesktopwidget.h

windows - 在 Windows 8 上的 Creator 中编译将在 Windows 7 上运行的 Qt 5 应用程序?

我安装了Windows8.1、Qt5.4MSVC2013OpenGL和MSVC2013。我想编译我的应用程序,以便它可以在Windows7中运行。我有几天无法访问Windows7机器,所以我想找到一个方法来增加它运行的机会“只是工作”。我熟悉如何分发Qt应用程序(将DLL复制到应用程序文件夹中),但这始终是Windows7->Windows7部署。是否有编译器目标标志或我必须设置的东西?我需要使用MSVC2012吗?我在我的Windows8.1机器上安装了Windows7.1SDK。谢谢 最佳答案 如果您提供正确的dll并且两者都是

windows - 从 Qt Creator 运行 Git Bash

是否可以为从QtCreator启动GitBash控制台分配快捷方式?例如,我已经将Alt+G,Alt+G分配给GitGui命令。我无法在选项->环境->键盘中找到合适的命令,但也许我只是错过了它。或者是否可以分配快捷方式以从QtCreator启动自定义可执行文件?这对我也适用。现在我需要点击几次才能打开当前项目的GitBash,这有点烦人。 最佳答案 您需要2个.bat文件,为方便起见,您可以将其放在C:\Windows中(因此它们位于%PATH%中)-C:\Windows\StartGitBash.bat包含startStartG

windows - 使用 msvc 为 Windows 构建 Qt - Qmakespec 错误

我正在尝试使用VisualStudio2013静态构建Qt为此,我正在关注theinstructionsprovidedbytheofficialwebsite1)下载、安装ActivePerl5.20并将其添加到PATH。2)qt-everywhere-enterprise-src-5.3.1的存档下载并解压到C:\Qt\Entreprise_23)我打开msvc2013命令提示符,并将目录更改为:C:\Qt\Entreprise_2\qt-everywhere-enterprise-src-5.3.14)从这里开始,我向路径添加了2个新元素:设置路径=C:\Qt\Enterpris

c++ - QT creator 和 Qt(只是它本身)的区别 - 启动 QT

我要求重新确认!(否则不要接受)..因为我是Qt平台的新手,所以我发现它很困惑!!在Windows平台上,您有:Qt5.4.1forWindows32-bit(VS2012,OpenGL)这是一个高达644MB的文件!以及下载中有关“QtCreator”的信息说:BlockquoteQtCreator3.3.1isincludedintheQt5.4.1binarypackages.Ifyouneedastandaloneinstaller,pleaseselectthefileaccordingtoyouroperatingsystemfromthelistbelowtogetthe

c++ - 锁定多个线程

我在Win32设备中有一个C++程序。该代码具有应该阻止对X的其他调用的函数X。这很简单,我可以使用互斥体来做到这一点。然而,函数X创建并启动一个线程Y,它将在X完成后监视事情。我需要确保在Y对一切都正确完成感到满意之前,X无法再次运行。据我了解,只能在同一个线程上获取和释放互斥锁。我想做的是将互斥锁的“锁定性”从X移交给Y。如果根据实际发生的情况更容易描述这一点,X用于打印某些东西,Y用于检查打印作业是否完成而没有用完纸张。一旦Y对作业已经完成并且纸张没有用完感到满意,它就可以让X打印其他东西。我们希望X尽快完成,以便设备可以继续其他工作(这通常不涉及打印,因此在打印机完成时不应暂停

c++ - 全局删除? qt应用程序中windows标题的按钮

我正在使用qt在Windows上编写一个C++应用程序,而qt总是放置这个“?”窗口标题中的按钮。目前我正在每个类的构造函数中删除它,这很烦人。有没有办法在一个地方从整个应用程序中全局删除按钮? 最佳答案 没有特定的方法,但如果您需要它用于所有对话框/窗口,您可以创建基类并在其构造函数中取消设置此标志:this->setWindowFlags(this->windowFlags()&~Qt::WindowContextHelpButtonHint);然后在所有对话框中使用这个基本对话框而不是QDialog。