草庐IT

c++ - QT信号槽如何使用模板?

我想在我的程序中使用信号和槽,但不幸的是它们应该用于传输几种不同的数据类型(例如QString、double等),我不想仅仅因为我需要而写20个不同的槽每种数据类型一个。但是当我想声明一个插槽时templatevoidSlot1(tdata);QT告诉我不能在信号和槽中使用模板。有解决方法吗?还是可以改进我的方法? 最佳答案 准确答案:Itisimpossible解决方法:您可以使用新的信号和槽语法执行类似的操作:QSlider*slid=newQSlider;QLineEdit*lne=newQLineEdit;connect(s

c++ - 使用 Qt::QueuedConnection 发出信号执行顺序

我有两个信号A和B从线程X中的一个对象接连发出,两个连接的插槽在主线程中。连接是QueuedConnection(由于多线程连接)。我的问题是:在调用槽时是否遵守信号的顺序,或者它们是否有机会以任意顺序执行? 最佳答案 您的两个信号都将在X线程的单个事件队列中排队,因此相应的插槽将按照信号发出的顺序执行。但在以下情况下,您不能依赖插槽执行顺序:signalAconnectedtoaslotinXthreadsignalBconnectedtoaslotinYthread还有一个Qt::BlockingQueuedConnection

c++ - 如何在QT中实时更新GL()

我想知道以固定的计时器间隔调用updateGL()是否会减慢渲染过程。所以,我想尝试实时渲染。我没有让它自动执行的功能。有人知道吗?其次,我在我的程序中注释了updateGL(),CPU使用率降低到1%和0%。现在,当我点击显示小部件时,它会跳到14%,为什么?GPU不是在做所有的渲染工作吗?如果是,为什么CPU跳到14?我该如何解决这个问题? 最佳答案 是的,你可以做到实时,没有撕裂(例如,以恰好60fps的速度重新绘制,显示器的刷新率)。为此,您必须启用V_sync,并使用间隔为0的QTimer计时器;。启用V_sync将使自动

c++ - 在 Qt Creator 中更改默认工作目录

是否可以将QtCreator中的默认工作目录更改为指定路径?或者是否可以在.pro文件中设置工作目录?PS:我知道QDir::setCurrent,但正在寻找其他方式 最佳答案 转到项目选项卡并在“构建和运行”中查找您正在使用的工具包中的运行选项卡你会在“运行”下看到这个选项 关于c++-在QtCreator中更改默认工作目录,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/187

c++ - 清除/重置 qt 中的模型(删除所有行)

我对重置或清除与QAbstractItemModel关联的数据的正确方法感到困惑。我正在编写一个应用程序,用户可以在其中使用一组新数据(空的或小的)“重新开始”。当用户提出这个请求时,我是否应该删除旧模型?或者我应该保留模型并删除所有行吗?问候,丹欧 最佳答案 一般来说,我更愿意让模型对变化使用react并采取必要的行动来更新它的View(当然是间接的)。然而,编程模型可以(=是)一个PITA,所以如果我正在审查创建新模型并删除旧模型的代码,我可能会通过手指查看。仅当您确定用户只会删除所有行时才这样做。如果用户可能会逐渐从模型中删除

c++ - 在qt中获取标签的鼠标点击位置

我用谷歌搜索并找到了thisforumthread其中OP似乎遇到了我遇到的确切问题。问题是,我如何从QLabel继承并重新实现mousepressed事件?我猜它会是这样的:classCustomLabel:publicQLabel{public://whatabouttheconstructors?voidmousePressEvent(QMouseEvent*ev);}voidCustomLabel::mousePressEvent(QMouseEvent*ev){QPoint=ev->pos();//Iwanttohaveanotherfunctiongettheeventpo

c++ - Qt5.1加载平台插件xcb失败

我使用的是ubuntu12.04和qt5.1。我编译我的项目没有错误,但是当我尝试在其他机器上启动我的应用程序时,我收到以下错误:Failedtoloadplatformplugin"xcb".Availableplatformsare:Annullato(coredumpcreato)我将所需的库添加到ld_library_path:linux-gate.so.1=>(0xb7705000)libQt5Widgets.so.5=>/home/computer/libs/libQt5Widgets.so.5(0xb70c4000)libQt5Core.so.5=>/home/compu

c++ - Qt/QML qmlRegisterType 与 setContextProperty(区别)

在Qt/QML应用程序中(此代码通常驻留在QtCreator项目的main.cpp中),以下几种方式将C++类暴露给QML有什么区别:qmlRegisterType("com.example",1,0,"UePeopleModel");和engine.rootContext()->setContextProperty("uePeopleModel",uePeopleModel);? 最佳答案 qmlRegisterType:“有时QObject派生类可能需要在QML类型系统中注册,但不需要作为可实例化的类型。”如果你想在一个或多个具

c++ - 为什么 Qt 信号不是 const

Qt使用signalsandslots用于对象通信。信号通常声明为成员函数,然后QtMOC生成该函数的定义。我想了解的是为什么信号不是const成员函数?编辑:我希望信号不会修改发件人,这就是问题的原因。 最佳答案 Iwouldexpectsignalsnottomodifythesender信号(如generatedbytheMOC)不直接修改类实例的成员。然而,生成的代码会传递一个this指针,供(潜在的)插槽使用。因此,连接的插槽可能会改变信号的发送者。所以技术上的原因是,如果信号是const,则需要所有插槽实现只调用发送方的

c++ - 使用具有多重继承的 Qt 信号和槽

我有一个类(MyClass),它从Qt内置对象(QGraphicsTextItem)继承了大部分功能。QGraphicsTextItem间接继承自QObject。MyClass还实现了一个接口(interface),MyInterface。classMyClass:publicQGraphicsTextItem,publicMyInterface我需要能够在MyInterface*上使用connect和disconnect。但是connect和disconnect似乎只适用于QObject*实例。由于Qt不支持从QObject派生类的多重继承,我无法从QObject派生MyInterf