草庐IT

c++ - 在 Wireshark 中看到的数据报,Qt UDP 套接字未收到

我正在编写一个通过UDP套接字与FPGA通信的Qt(5.6)应用程序。数据包以2KHz的速率流式传输到PC(所有数据包大小相同,1272字节)。Wireshark显示正在发送数据包,并且UDPheader符合预期。问题是,我正在使用的QtUDP套接字从未收到这些数据包。readyRead信号永远不会被调用。这是一个代码片段:UdpConnection::UdpConnection(QObject*parent){fpgaConnection=QSharedPointer(newQUdpSocket);qDebug()bind(QHostAddress("192.168.10.10"),

c++ - 使用 C++ Lambda 函数作为 Qt 中的槽是否有助于保持库的二进制兼容性?

我关心的是使在Qt5.9下开发的小部件库能够在未来升级而无需重新编译已经使用它的代码。当然,我是从PImpl习语开始的,它的Qt版本描述了here和here。然而,在尝试调整我的代码时,我想到了一个想法,与其添加新的数据成员并将它们移动到一个单独的私有(private)类,不如使用Qt的带有lambda函数的信号/槽机制,并且只有本地变量。让我们用下面的例子来说明这个想法:变体A:classFoo:publicQWidget{Q_OBJECTpublic:explicitFoo(QWidget*parent=nullptr);private://AbunchofdatamembersQ

c++ - Qt 基于参数值映射信号

我知道我可以使用QSignalMapper根据连接调用具有不同参数的插槽。我想要实现的有点不同。我们在应用程序中使用插件,不同的插件负责不同类型的对象。我们将多个插槽连接到主应用程序发出的一个信号,每个插槽都在不同的插件中实现。信号的参数之一是QString,指示与信号关联的对象类型。目前,我们正在插槽中检查此参数,如果类型由插件处理则继续。这有一个缺点,每个插件都会进行此检查,我想尽可能避免这种情况。我想将所有插槽连接到同一个信号,当信号发出时,根据QString参数的值只调用适当的插槽,有点像QSignalMapper但方式不同。是否有任何内置机制可以做到这一点?如果没有,关于我如

c++ - Qt 应用程序文本大小在 MacOSX 下不正确

在Windows下使用QtCreator设计UI,并在MacOSX下移植相同的.ui文件会导致一些文本部分非常小的设计——实际上是HTML部分。这似乎是因为QtCreator使用pt而不是px作为文本大小单位,并且默认屏幕分辨率在Windows和MacOSX。我没有得出更一致的结果有什么原因吗?除了将每个pt编辑成px之外,是否有任何解决方法?谢谢。 最佳答案 根据经验,您不应在QtDesigner/Creator中手动指定控件的字体大小,因为这会导致您遇到问题。不一致的原因是不同平台使用不同的DPI设置(Windows上为96dp

c++ - 如何指定Qt插件构造函数?

我想知道是否可以在Qt插件接口(interface)中指定一个构造函数?(扩展应用程序)我想强制使用接口(interface)的插件在构造函数中获取参数。 最佳答案 我认为完全按照您描述的方式做是不可能的。但是,您可能会尝试创建工厂对象,然后将参数传递给YourFactory::create()方法,该方法返回指向YourObject的指针。另一种(更丑陋的恕我直言)方法是向YourObject添加initialize()方法。查看QFontEnginePlugin的接口(interface)和QScriptExtensionPlu

c++ - 在 Qt 4.4 中为 QTableView 设置 Tab 键顺序

我有一个QTableView,它的数据以QStandardItemModel的形式加载ParameterValueX10.456X20.123....andsoon.现在我必须设置TabOrder属性,以便我只能遍历值而不是参数。即当控件在0.456上时,如果我按“Tab”键,它必须转到0.123而不是X2(默认行为)。此外,列参数已禁用Edt触发器,我只能更改值。我知道QWidget::setTabOrder(QWidget*,QWidget*)但由于我是通过QStandardItemModel设置数据,我如何才能在QTableView中实现所需的Tab键顺序?我正在使用Qt4.4和

c++ - 在 Qt 中将一个小部件与另一个小部件交换

在现有View中将一个QGraphicsWidget与另一个“交换”的最佳方法是什么?我有一个TreeView小部件和一个标签小部件,我希望它们在不同时间占据相同的空间。具体来说,当有错误时,我想在标签中显示它,当没有错误时,我想显示树。我曾尝试以编程方式隐藏一个并使用hide()和show()显示另一个,但问题是隐藏的小部件占用了我的QGraphicsLinearLayout即使它被隐藏,也会留下空白。或者,我想我可以在布局中添加和删除小部件,但这似乎很笨拙,因为它意味着小部件所有权的变化,我需要记录它们在布局中的位置,以便我可以将它们插入回正确的地方。在JavaSwing中,我会使

c++ - Qt C++ XML,针对 DTD 进行验证?

有没有办法根据Qt的XML处理的DTD验证XML文件?我试过谷歌搜索但似乎无法得到直接的答案。如果Qt不包含对验证XML文件的支持,那么我自己实现验证的过程可能是什么?关于根据规范验证XML的任何好的引用资料?感谢您的帮助! 最佳答案 您可以使用以下代码验证您的XML:http://qt.nokia.com/doc/4.6/qxmlschema.html您还可以在这里找到示例:XMLSchemaValidationExample希望对您有所帮助! 关于c++-QtC++XML,针对DTD

c++ - Qt : After installation of VS2012 LNK1123 failure during conversion to COFF

之后我安装了VS2012我的Qt项目不再编译(我的电脑上有VS2010和VS2012)。消息:LNK1123:转换为COFF期间失败:文件无效或损坏。以前只用VS2010没问题。对于VS2012环境,建议(参见SOhere):使用EnableIncrementalLinkingNO编译卸载.net4.5因为我没有将Qt与VS2012结合使用(所以没有插件),所以我不能setuptheprojectasmentioned.我也不能卸载.net4.5(另一个项目需要)。有机会解决这个问题吗?我有一些相关的问题是否可以针对VS2012C++编译器进行编译?Hereitsays为此,我需要自己

c++ - 如何在带有 qmlscene(或 qmlviewer5)的 .qml 上使用 Qt Quick 2 扩展插件

我在QtCreator中使用项目模板“Libraries/QtQuick2ExtensionPlugin”创建了一个测试插件作为Qt5/QML共享库。我的开发环境是linux,Qt-5.0.0和QtCreator-2.6(详情见底部)。源文件(在要点上):https://gist.github.com/4467883源文件是默认生成的,没有任何更改。项目名称是“无标题”,uri是“com.mycompany.mycomponents”,对象类名称是“MyItem”。“/tmp/untitled”中的源文件作为SRCDIR。并将其构建为输出库文件作为"libuntitled.so"、"q