Tag: qt

用for循环遍历QMap

我有一个QMap对象,我正在尝试将其内容写入一个文件。 QMap<QString, QString> extensions; //.. for(auto e : extensions) { fout << e.first << "," << e.second << '\n'; } 为什么我会得到: error: 'class QString' has no member named 'first' nor 'second' 是不是typesQPair ?

错误:无法parsing“macosx10.8”的SDKpath

所以我刚刚在5分钟前安装了qt,当我想在button中编写一行简单的文本并尝试运行它时,我得到这个错误: :-1:错误:无法parsing'macosx10.8'的SDKpath 谁能帮忙? 另外,如果你需要我做点什么,你能解释一下吗? (实际上并不像我“五”,但我希望你明白我的意思)

Qt编程:在Python或C ++中更高效?

尝试着深入Qt,但还没有做一个大型的项目。 目前使用Python,但我一直在想 – 在程序员的生产力方面,哪种语言更好? 在大多数语言之间的比较中,Python是显而易见的答案,因为你不必混淆内存pipe理和所有这些。 但是,对于Qt我不太确定。 它为C ++提供了足够的附加function(从我所知道的情况来看),大部分时间(不包括类定义和结构组件等附加function),一行Python代码大致等于一行C ++代码。 Qt为你做了几乎所有的内存pipe理,只要你坚持使用它的类,并且提供你可以在Python中find的漂亮容器的等价物。 我一直倾向于使用静态types的语言,但是由于各种各样的原因,我们也得到了Python的热潮。 但是,如果程序员的生产力与C ++相似,那么我可以跳出这种方式来获得其他好处 – 代码效率更高,用户安装的依赖性更less。 思考?

如何从QList中删除元素,而使用foreach迭代呢?

我是Qt新手,想学习这些成语。 foreach文档说: Qt在进入foreach循环时会自动获取容器的副本。 如果您在迭代时修改容器,则不会影响循环。 但是它并没有说如何在用foreach迭代的时候去除一个元素。 我最好的猜测是这样的: int idx = 0; foreach (const Foo &foo, fooList) { if (bad(foo)) { fooList.removeAt(idx); } ++idx; } 似乎丑陋必须将范围外的idx循环(并必须维护一个单独的循环计数器)。 另外,我知道foreach制作了一个QList的副本,这个版本很便宜,但是一旦我删除了一个元素,会发生什么呢?它还是很便宜的,还是会有昂贵的copy-on-modify呢? 是的, 深层复制发生 。 编辑:这似乎并不像地道的Qt要么。 for (int idx = 0; idx < fooList.size(); ) { const Foo &foo = fooList[idx]; if (bad(foo)) { fooList.removeAt(idx); } else ++idx; }

selectWPF / C#和Qt / C ++

我和我的团队正在开发一个应用程序,其中涉及使用C ++编写的后端,并涉及使用OpenCV,MIL等库。 现在,我们需要开发一个GUI来与这个程序进行交互,使GUI显示图像,用户可以与图像交互并注释/标记图像,然后运行用C ++编写的image processingalgorithm来显示结果。 对于graphics用户界面,我坚持selectWPF和Qt我个人发现WPF更容易,而且比Qt更强大我明白,WPF不能移植到Linux,但我不担心这太多…另外,WPF使用了DirectX技术,我可能不得不在稍后阶段使用DirectX技术来生成一些3D可视化。 请帮助我以下几点: 我可以直接与WPF接口(而不是与Visual C#?) 如果(第一点)是不可能的,那么考虑一下:C ++中的代码将会很大,并且也涉及一些库,那么我可以使用C#来调用C ++函数吗?花费在学习Qt上的时间会less于使我非托pipe的非OO C ++代码与WPF一起工作? (我有一个下沉的感觉,我不得不写太多的代码接口C ++与WPF,这可能等于重写实际程序本身的一半… :-()

在Qt中测量文字宽度

使用Qt框架,我如何测量用给定字体/样式呈现的文本的宽度(以像素为单位)?

debugging一个pyQT4应用程序?

我有一个相当简单的应用程序与pyqt4构build。 我想debugging连接到我的应用程序中的button之一的function之一。 但是,当我做到以下几点 python -m pdb app.pyw > break app.pyw:55 # This is where the signal handling function starts. 事情并不像我希望的那样工作。 debugging器进入一个打印出QCoreApplication::exec: The event loop is already running的无限循环,而不是打破了我设置断点的function, QCoreApplication::exec: The event loop is already running ,我无法input任何东西。 有一个更好的方法吗?

在x86汇编中,“lock”指令是什么意思?

我在Qt的源文件中看到了一些x86汇编: q_atomic_increment: movl 4(%esp), %ecx lock incl (%ecx) mov $0,%eax setne %al ret .align 4,0×90 .type q_atomic_increment,@function .size q_atomic_increment,.-q_atomic_increment 从谷歌search,我知道lock指令将导致CPUlocking总线,但我不知道什么时候CPU释放总线? 关于整个上面的代码,我不明白这个代码如何实现Add ?

Qt – 键盘和鼠标事件透明度的顶级小部件?

我想要一个应用程序的主窗口忽略鼠标和键盘事件,将它们传递给窗口pipe理器Z顺序下的应用程序。 我看到如何让子窗口小部件忽略键盘或鼠标事件,但主窗口呢? 我试图制作一个桌面小部件,总是坐在背景上,对于键盘和鼠标事件是完全不可见的。 (通过) Qt :: X11BypassWindowManagerHint让我通过键盘传递(虽然悲哀X11特定,但现在罚款),那么如何鼠标事件? 是否有一个操作系统不可知的方式对键盘事件透明? 编辑: 这里的关键词是透明度。 我不想吃鼠标和键盘事件,我希望窗口pipe理器知道我根本不需要它们。 这些事件应该针对zorder下的任何应用程序。 例如,我希望能够点击我的小部件所覆盖的桌面图标,并与它们进行交互,就好像小部件不在那里一样。

qobject_cast如何工作?

我刚刚在Qt中find下面的代码,我有点困惑这里发生了什么。 特别是对于reinterpret_cast<T>(0)是什么? template <class T> inline T qobject_cast(const QObject *object) { // this will cause a compilation error if T is not const register T ptr = static_cast<T>(object); Q_UNUSED(ptr); #if !defined(QT_NO_MEMBER_TEMPLATES) && !defined(QT_NO_QOBJECT_CHECK) reinterpret_cast<T>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T>(const_cast<QObject *>(object))); #endif return static_cast<T>(const_cast<QObject *>(reinterpret_cast<T>(0)->staticMetaObject.cast(const_cast<QObject *>(object)))); } 任何人都在意解释?