- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
8年前关闭。
Improve this question
Qt是一个很好的框架和很棒的 UI 工具包,它有 many useful features and concepts .我们大多数人可能同意Trolltech , 最近 Nokia ,在开发它方面做得很好。 Qt 的最新进展之一是 QML ,我觉得这是令人着迷的进步。
但是,我发现一些概念设计或实现不当,例如 Model/View (概念很好,但实现不是)Phonon 也是如此媒体框架。有人说是meta-object让他们发疯的概念。
所有这些显然或多或少都是主观的,但是 Qt 在 Qt 中使用哪些功能或概念让您觉得烦人或繁重?以及如何绕过它们?
最佳答案
我对 Qt 的大部分提示来自于 API 没有完全接受 QObject 提供的动态性这一事实。如果你敢于创建一个元对象编译器来为 C++ 添加动态行为,那么为什么要害羞呢?
我在下面列出的所有东西都是我的团队在某个时候需要的东西,我们必须自己编写代码。这很有趣,我们学到了很多关于 Qt 内部的知识,但我不介意它是否已经完成并准备好使用。
无分布式 QObject
你知道,就像在 cocoa 一样。他们在 QtDBus 上走了一半——剩下要做的就是网络。我们必须为此实现自己的解决方案,而且由于我们生活在 Qt 代码之外,我们无法更改内部结构来实现所有不错的功能。
没有用于数据存储的 API
当然,每个人都会编写自己的不完整 QObject-to-SQLite 库。不过,QDataStream 是一个非常好的开始。
无数据绑定(bind)
好吧,Qt Quick 有数据绑定(bind),但数据绑定(bind)应该存在于 QtCore 中。有了良好的数据绑定(bind),编写表示 QObject 集合的 QAbstractItemModel 应该成为过去:QObjectListModel 应该是你所需要的。
(是的,QDataWidgetMapper 是个笑话。)
QObjects 没有自动撤消管理
我们的模型类通常是 QObjects 并且 Q_PROPERTY 有一个可选的 NOTIFY 信号,这正是实现自动撤消所需要的。它很容易做到,它应该已经成为 Qt 的一部分。 (然而,它需要一些哈希。)
没有收藏属性
并非所有属性(property)生来都是平等的。其中一些是收藏品。能够以抽象的方式处理这些绝对是一件好事。
半生不熟的 QMetaStuff API
我只是讨厌这个 API,因为我喜欢它。例如,不能:
QVariant call(QObject* object, QMetaMethod metaMethod, QVariantList args)
{
QList<QGenericArgument> arguments;
for (int i = 0; i < args.size(); i++) {
// Notice that we have to take a reference to the argument. A
// const_cast is needed because calling data() would detach
// the QVariant.
QVariant& argument = args[i];
QGenericArgument genericArgument(
QMetaType::typeName(argument.userType()),
const_cast<void*>(argument.constData())
);
arguments << genericArgument;
}
QVariant returnValue(QMetaType::type(metaMethod.typeName()),
static_cast<void*>(NULL));
QGenericReturnArgument returnArgument(
metaMethod.typeName(),
const_cast<void*>(returnValue.constData())
);
// Perform the call
bool ok = metaMethod.invoke(
object,
Qt::AutoConnection, // In case the object is in another thread.
returnArgument,
arguments.value(0),
arguments.value(1),
arguments.value(2),
arguments.value(3),
arguments.value(4),
arguments.value(5),
arguments.value(6),
arguments.value(7),
arguments.value(8),
arguments.value(9)
);
if (!ok) {
// Handle the error...
} else {
return returnValue;
}
}
关于qt - Qt 中的哪些特性或概念让你感到厌烦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664750/
目录 C#特性 1. 概括 2. 语法 定义特性类 应用特性
是否有关于 Python 语言必须提供哪些功能的文章/论文?为什么应该使用 Python 而不是任何其他语言? Python 的优点和缺点是什么? 最佳答案 Why Python和 Why Pytho
我想弄清楚为什么 .x比*.x具有更高的特异性当后者有望获胜时。 不是*.x应该具有 0-0-1-1 的特异性(1 个类,1 个标签)而 .x只是一个类(class) 0-0-1-0 ? 考虑以下基本
在尝试评估非 instanceof 条件时,我发现了我在 Groovy 2.4.7、1.6.0 JVM 中没有预料到的行为。 总之: class Foo { static Boolean
当使用可变结构和属性时,编译器可以解决一些问题,但不能对其他相当明显的事情做同样的事情,这对我来说似乎很奇怪。 以下面的自动属性为例: Vector2 Vector { get; set; } 而不是
我对 ES3 有一定的了解,但我对 ES5 的特性不是很了解。我 - 或多或少 - 知道: Object.create(), Object.freeze() “使用严格” getter 和 sette
我最近开始将 Django 1.5.4 用于带有 MySQL 后端的 Web 应用程序。就在一开始,我遇到了某些限制,这让我想知道 Django 是否是继续前进的正确方法。 一些明显的缺点是: 缺少复
在函数模板的定义中,模板参数的实例化一般是未知的。类型特征可用于在编译时获取一些信息。例如,这是 is_pointer 的一个简单应用: template void foo(T p) { cout
我正在设计页面的样式,该页面具有除最后一个框外的带底部边框的连续框。我为所有框应用类 .box 并添加 .box_last 以仅隐藏最后一个框的边框。 .box { border-bottom-s
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我有兴趣编制一份不建议在嵌入式系统中使用的 c++ 功能列表(这可能会导致人们推荐使用 c 而不是 c++)。如果您知道,请尝试添加原因,或者将您的原因添加到其他人的答案中。 这是一个开始(我知道的唯
作为一名 Ruby 程序员,您是否曾觉得任何使用起来有点冒险的功能,可能是因为它的奇怪行为?它可能有很好的文档记录,但在调试时很难找到,或者难以记住? 我通常尽量远离 String#gsub!。文档说
我正在开发一个连接到健身 watch 的蓝牙应用程序。这是我第一次使用蓝牙。我设法使用出色的 FlutterBlue 将我的应用程序与设备连接起来图书馆。 但是我无法理解我从阅读中获得的结果。这是我阅
1. 迭代器(Iterator)的介绍 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。 定义:迭代器是一种检
嗨,伙计们,有没有动态更改 Spring 属性文件内容的好例子?如果您能给我一些示例或链接,我将不胜感激。 非常感谢 最佳答案 我想你可以使用 ReloadableResourceBundleMess
SystemVerilog 引入了一些非常有用的结构来改进编码风格。然而,正如我的一位同事经常说的,“你不是在写软件,你是在描述硬件。”考虑到这一点,当最终结果需要合成时,应该避免语言的哪些特征?这个
我定义了这些测试依赖项 / Test Dependencies lazy val wiremock = "com.github.tomakehurst" % "wir
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我有兴趣提高我的设计能力(设计具有属性、方法等的类)。即如何决定类、方法和属性应该是什么? 你们能建议我改进这个的好 Material 吗? 最佳答案 请看: Any source of good o
我是一名优秀的程序员,十分优秀!