我正在使用Qt4编写一个Ruby 1.9.2应用程序用于GUI,我想在Linux,OS X和Windows上分发它.除了我的Windows 7 64位盒子外,我的应用程序运行正常.
有Win7 + Qt4 + 1.8.7的工作示例,但显然不是Win7 + Qt4 + 1.9.2.有两种宝石的Ruby-QT绑定,qtbindings和qtruby4(有时被称为qt4-qtruby),但我还没有看到任何人使用Ruby 1.9.2 Win7上运行.
qtruby4这篇文章从2008年10月开始,它的更新版本从2011年6月起作为很好的起点,但是我通过RubyInstaller for Windows的下载页面安装Ruby 1.9.2与后者不同.1.8.7似乎工作正常,但是当我用1.9.2尝试时,我得到了一些不寻常的错误.要求'rubygems'然后要求'Qt'结果:
no such file to load -- 'qtruby4'
Run Code Online (Sandbox Code Playgroud)
上面的第一篇文章链接到dr1ku的一篇更深入的文章,可能会提供一些线索.
以下是一些似乎遇到同样问题的人:
qtbindings我的应用程序实际上使用的qtbindings宝石,所以我尝试安装该相反,与gem install qtbindings --platform=mswin32[1]然而,当我试图,require 'Qt' …
这个问题已在本论坛中提出,但我不明白这个概念.
我正在四处阅读,似乎信号和插槽是使用函数指针实现的,即信号是一个很大的函数,它在里面调用所有连接的槽(函数指针).它是否正确?在整个故事中生成的moc文件的作用是什么?我不明白信号功能如何知道哪个插槽要调用,即哪个插槽连接到该信号.
谢谢你的时间
我试图通过谷歌找到它们,但没有太多运气.我知道第三方控件的数量没有.NET或Java那么大,但肯定有一些比库提供的更好吗?
到目前为止,我发现的唯一解决方案是继承QItemDelegate并在paint()函数中实现我的对齐规则.这真的是最简单的方式吗?
我正在使用C++ API.
我只是问自己如何重启我自己的qt应用程序?
有人能告诉我一个例子吗?
我想在调整小部件大小时采取行动.
有没有办法在没有在该窗口小部件上安装事件过滤器的情况下捕获它(显然,没有子类化它)?AFAIK,QWidget没有resized信号.
我想使用我的软件的前端存储图像和.docx/.doc,.pptx/.ppt,.pdf文件.我不明白如何实现它以及如何将BLOB和CLOB文件插入表中.请帮忙.
我正在使用Kubuntu 11.04,MySQL5,Qt 4.7.3.
我开始尝试在Qt中进行单元测试,并希望听到有关涉及单元测试信号和插槽的场景的评论.
这是一个例子:
我想测试的代码是(m_socket是指向QTcpSocket):
void CommunicationProtocol::connectToCamera()
{
m_socket->connectToHost(m_cameraIp,m_port);
}
Run Code Online (Sandbox Code Playgroud)
由于这是一个异步调用,我无法测试返回的值.但是,我想测试套接字在成功的connection(void connected ())上发出的响应信号是否实际发出.
我在下面写了测试:
void CommunicationProtocolTest::testConnectToCammera()
{
QSignalSpy spy(communicationProtocol->m_socket, SIGNAL(connected()));
communicationProtocol->connectToCamera();
QTest::qWait(250);
QCOMPARE(spy.count(), 1);
}
Run Code Online (Sandbox Code Playgroud)
我的动机是,如果响应不会在250毫秒内发生,那就是错误的.
然而,信号永远不会被捕获,我无法确定它是否发射.但我注意到我没有在测试项目的任何地方启动事件循环.在开发项目中,事件循环以main开头QCoreApplication::exec().
总结一下,当单元测试一个依赖于信号和插槽的类时,应该在哪里
QCoreApplication a(argc, argv);
return a.exec();
Run Code Online (Sandbox Code Playgroud)
在测试环境中运行?
我有一组相当复杂的C++类,它们是用Java重写的.因此每个类都有一个继承的类,然后它还实现了一个或多个抽象类(或接口).
是否可以使用qobject_cast()从类转换为其中一个接口?如果我从中导出所有接口QObject,由于模糊QObject引用,我会收到错误.但是,如果我只继承了基类QObject,我就无法使用,qobject_cast()因为它与QObjects一起运行.
我希望能够在它们的接口引用的插件和DLL之间抛出类.