草庐IT

c++ - 当 QObject 被销毁时,Qt 可以安排将 QObject* 设置为 nullptr 吗?

Qt框架有一个signalforallQObjectswhichisemmitedbeforedestruction那个QObject。此事件可用于在它指向的对象被销毁时自动清空一些QObject*变量。但是要做到这一点,您需要使用相对较多的代码。您需要注册一个信号并将其链接到变量。在我看来不是很方便。我可以安排(通过Qt)当QObject被销毁时自动清除指向QObject的指针吗? 最佳答案 没有原始指针,不,但是Qt提供了一个模板化的QPointer完全符合您所描述的类。 关于c++

c++ - Qt Concurrent 或 std::async 用于新代码?

我正在考虑运行异步代码的两个选项:QtConcurrent和std::async.鉴于我正在使用Qt编写GUI应用程序,因此使用QtConcurrent是有意义的。然而std::async看起来也不错,并且得到了所有主要编译器的支持。我应该为新代码使用QtConcurrent还是std::async?比较两者时我还应该寻找什么? 最佳答案 GiventhatI'mwritingaGUIappwithQt,itmakessensetogowithQtConcurrent我想说,事情没那么简单。我个人会尽可能多地使用标准库。但是,需要考

c++ - Mac OSX 10.9 中的 Glut 弃用,IDE : QT Creator

我试图在qtcreator上构建一个opengl程序,安装在我的mac上,带有osx10.9。我在osx10.9中收到了关于过剩函数的几个警告,示例错误消息如下:“glutInit”已弃用:首先在OSX10.9中弃用[-Wdeprecated-declarations]glutInit(&argc,&argv);^我想知道GLUT.h在osx10.9中是否不再可用?根据其他一些帖子,据说只要我们将“OSXDeploymentTarget”改回OSX10.8,就可以了。如何在qtcreator中这样做?谢谢! 最佳答案 您仍然可以在1

c++ - 在非 Qt 线程中使用 Qt 信号/槽

我已经尽职调查但找不到这个问题的答案:Qt信号/槽机制如何与非Qt线程交互?特别是,从非Qt(例如TBB)线程发出信号,被我的主事件循环中的插槽捕获是否安全?假设我明确地将它与排队连接连接起来?(我的感觉是指定连接排队是强制性的;这是正确的吗?)(作为附带问题,我一直假设Qt同步类(例如QMutex)在非Qt线程间工作。这是正确的吗?)(澄清一下,我担心的是排队连接机制不会使用守卫,例如互斥锁,如果它没有检测到信号是从不同的Qt线程发出。)(最后补充:我可以相信,因为Qt机制是根据特定于平台的原语实现的,所以在实践中我尝试做的所有事情都会优雅地工作,但我也想知道是否Qt提供了这些东西会

c++ - Windows 10 中 Qt 桌面应用程序的不当缩放

我正在为Windows10编写一个简单的Qt(Widgets)Gui应用程序。我正在使用Qt的5.6.0测试版。我遇到的问题是它根本无法缩放到我的surfacebook屏幕:这有点难说,因为SO缩放了图像,但请注意停靠小部件标题栏控件相对于窗口标题栏控件有多小。Thislink来自Qt谈论缩放,但它主要关注qml/qtQuick和一般的移动应用程序,另外似乎暗示在桌面QtWidgets应用程序中,QPainter将自动确定适当的缩放比例,这很清楚不是。确保桌面、非qmlQt应用程序在高DPI显示器(尤其是Windows10)上正确缩放的最佳方法是什么? 最佳

c++ - 使用 CMake 创建 Qt 翻译文件

当我尝试在CMake进程中添加生成翻译的过程时遇到问题。现在我有以下CMakeLists.txt:configure_file(${CMAKE_CURRENT_SOURCE_DIR}/defines.h.cmake${CMAKE_CURRENT_BINARY_DIR}/defines.h)file(GLOB_RECURSEUI_FILES*.ui)file(GLOB_RECURSECODE_FILES*.cpp)qt5_wrap_ui(UI_HEADERS${UI_FILES})#Qt5LinguistToolsfind_package(Qt5LinguistTools)FILE(GL

c++ - Qt 中的 os.path.join()?

我正在寻找一种简单的跨平台方式来将路径、目录和文件名连接成C++中的完整路径。我知道python有os.path.join()而matlab有fullfile()。Qt有类似的东西吗?QFileInfo似乎无法做到这一点。 最佳答案 QDir有absoluteFilePath和relativeFilePath来组合路径和文件名。 关于c++-Qt中的os.path.join()?,我们在StackOverflow上找到一个类似的问题: https://stac

c++ - Qt 文件对话框呈现不正确并崩溃

我正在使用QFileDialog::getOpenFileName函数来打开一个文件。但是,在运行Windows7的客户端计算机上,这要么显示损坏的打开文件对话框(如屏幕截图所示),要么导致整个应用程序崩溃。我用来打开文件对话框的代码是:voidMainWindow::on_action_triggered(){autofilename=QFileDialog::getSaveFileName(this,"GenerateReport","","CSVfiles(*.csv)");if(filename.isEmpty()){return;}//Dooperationsonfilena

c++ - Qt 是否有自己的 boost::optional 替代方案?

Qt是否有自己的boost::optional替代方案,还是我应该只使用boost::optional? 最佳答案 Qt有一个“变体”类型,但没有“可选”类型。我认为boost::optional(或者,在较新的C++版本中,std::optional)是一个合理的选择。 关于c++-Qt是否有自己的boost::optional替代方案?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - Qt 拆分器禁用

我希望能够阻止用户在运行时移动QSplitter。调用setEnabled(false)会执行此操作,但它还会禁用所有子窗口小部件-这不是我想要的。有没有办法做到这一点?我是否必须禁用拆分器,然后手动重新启用所有子窗口小部件?这似乎相当麻烦,因为这必须是一种相当普遍的做法。任何人都可以提出任何建议吗? 最佳答案 这样做:for(inti=0;icount();i++){QSplitterHandle*hndl=splitter->handle(i);hndl->setEnabled(false);}