草庐IT

c++ - 如果从同一个信号调用两个槽,Qt 可以同时调用它们吗?

如果在两个不同的线程中有两个槽,并且这些槽连接到第三个线程中的信号。两个槽会同时被信号调用还是每次都被同步调用?我问是因为我想发送一些回调数据结构(用QSharedPointer封装)并询问是否需要内部锁定机制。 最佳答案 如果您使用Qt::QueuedConnection将信息传递给线程,则不需要锁定实际的信号/槽调用,因为QueuedConnection机制以线程安全的方式处理此问题。话虽如此,您仍然需要保护您的线程访问的任何共享内存,无论它们是如何调用的。第三个线程发出单个信号以导致调用两个槽这一事实不会改变这一点。

c++ - Qt:某些插槽不会在 Release模式下执行

我正在Qt(MSVC++2008)中做一些简单的程序,只有几个复选框和按钮。在Debug模式下,一切正常,但我不能分发这样的可执行文件,因为大多数人没有安装VisualStudio。当我在Release模式下编译它时,只有2个按钮起作用。我使用QtCreator的“绘图工具”(我猜是QtDesigner)设计了我的窗口。我的头文件中确实定义了这样的插槽:privateslots:voidon_goButton_clicked();//Worksfinevoidon_InputCheckBox_stateChanged(intarg1);//Don'tworkvoidon_outputF

c++ - Qt 中的截屏支持?

我知道有一些非常棒的工具可以捕捉桌面上的动态屏幕,但作为我一直在开发的这个应用程序的一部分,我需要捕捉在特定小部件区域发生的事件。到目前为止,开发完全是在开放的QtSDK之上完成的,但我没有看到任何对截屏视频的支持。除了谷歌搜索之外,我已经探索了该论坛上的所有相关答案。在grabWidget上合并周期性像素图似乎是一种方法,但我希望有更优雅和更强大的东西。我找到的所有howTos都是基于DirectX或GDI。如果在这种情况下存在一个正确的方法或我在GPL许可框架中有其他替代方法,请告诉我正确的方法。 最佳答案 因为没有人提出另一个

c++ - Qt : send Key_Return and Key_Delete events

我正在使用QtEmbedded开发虚拟键盘,但遇到了一个小问题。事实上,我使用SignalMappers将键映射到键盘事件,以便在QTextEdit小部件中显示文本。一切正常,除了两个事件:Key_Return和Key_Delete;我不知道我做错了什么,也许你会有想法。这是一个经典的代码,发送字符:voidVirtualKeyboard::SendChar(intindex){QCharcharToSend(letters_.at(index)->text().at(0));//Getcharserver_->sendKeyEvent(charToSend.unicode(),QEv

c++ - Selenium 和 qt C++?

是否可以将selenium与qtc++一起使用?selenium似乎没有对C++的官方支持?http://seleniumhq.org/download/ 最佳答案 您可以使用json有线协议(protocol)在Qt/C++应用程序中与webdriver服务器通信,但请考虑改用一些脚本语言。例如,Python非常容易学习并且具有webdriver绑定(bind)。http://code.google.com/p/selenium/wiki/JsonWireProtocolhttp://code.google.com/p/selen

c++ - Qt 小部件未显示在主窗口中

我正在尝试创建主应用程序窗口。它应该有一个菜单栏,并在下面显示一个带有分隔符的标签。我的主窗口代码如下。我遇到的问题是菜单栏显示但标签和拆分器不显示。到目前为止我尝试过的事情:1.将拆分器的父级设置为“this”->拆分器显示,但绘制在菜单栏上并且很小。2.将标签的父级设置为“this”->标签显示,但绘制在菜单栏上。3.将分离器的父级设置为“this”,父级和标签->标签不显示,我在菜单栏下方绘制了拖鞋的微型版本。4.尝试重新排列代码行并得到各种其他结果,例如在菜单栏上绘制的大拆分器不随窗口调整大小,在菜单栏下方的小拆分器,只有菜单栏,没有其他任何东西,等等-没有用。看起来垂直布局完

【QT专栏】QT中实现多线程的四种方式和线程同步

目录一、继承QThread1.基本概念2.操作流程二、继承QObject(推荐)1.基本概念2.操作流程三、继承QRunnable,配合QThreadPool实现多线程1.外界通信2.QMetaObject::invokeMethod()介绍3.QMetaObject::invokeMethod()使用方式四、使用QtConcurrent::run()1.基本概念2.操作流程3.实现案例五,线程同步1.低级同步原语2.高级事件队列一、继承QThread1.基本概念一个QThread类的对象管理一个子线程,自定义一个类继承自QThread,并重写虚函数run(),在run()函数里实现线程需要完

c++ - 使用 GCC 4.6.2 C++ Qt、MinGW、Vista 设置堆栈大小

我想增加我的程序的堆栈大小,因为我有一个复杂的递归算法,迭代重写将是一个真正的痛苦。我正在使用GCCC++4.6.2。MinGw,在Vista上使用Qt.pro文件构建(我使用Qt作为GUI前端)。本网站的建议是使用:-gcc-Wl,--stack,4194304并将其发送到g++链接阶段:-LIB+=-Wl,--stack,4194304但是链接器错误:-g++:error:unrecognizedoption'--stack,4194304'我尝试使用QMAKE_CXXFLAGS+=将选项发送到编译阶段,但g++仍然barfs。唯一不会barf的选项是GCC文档(.pdf4.5.0

c++ - Qt 中的动画绑定(bind)更改

我正在尝试找到一种方法来在绑定(bind)更改时对QML元素进行转换。假设您有一个Text元素,其中text属性绑定(bind)到某物。我想要的是当绑定(bind)中的数据发生变化时,元素淡出(仍显示旧数据),切换并淡入新数据(实际转换发生在元素不可见时。)我一直在到处寻找执行此操作的方法,但我能弄清楚。我试过在QML中使用QtQuick动画,但是数据本身在动画运行之前发生了变化,从而使动画变得不必要。我已经尝试创建一个自定义QDeclarativeItem对象,该对象在QDeclarativeItem::paint()中调用动画,但我不知道如何让它实际运行。我应该在这里指出,我知道我

c++ - 如何在qt中编写自己的收藏?

我正在写一些像QT中的普通集合一样的类:classMyCollection{MyElement&at(int)const;MyElement&operator[](int)const;intcount()const;};现在我想用QT的foreach枚举我的新类中的所有元素。我应该怎么做才能实现这一目标? 最佳答案 Qt(至少4.8)使用(来自foreach宏)模板包装类QForeachContainer(参见qglobal.h)进行迭代嗯。默认实现调用begin()/end(),但您也可以编写自己的特化......或者只实现ite