如何确定 qtable 单元格中小部件的类型?

发布于 2024-11-13 11:43:35 字数 226 浏览 2 评论 0原文

我创建了一个 QTable ,其中在各个单元格中包含许多 gui 元素,例如 comboBoxescheckBoxes 。我可以通过创建指向这些元素的指针来访问它们。我想知道的是,有什么方法可以知道单元格具有什么类型的 widgetcomboBoxcheckBox)?

I have created a QTable with lots of gui elements like comboBoxes and checkBoxes in various cells. I am able to access these elements by creating pointers to them. What I want to know is, is there any way to know what type of widget(comboBox or checkBox) a cell is having?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

愁杀 2024-11-20 11:43:35

我建议使用 qobject_cast https://doc。 qt.io/qt-5/qobject.html#qobject_cast

它的工作方式类似于dynamic_cast,但更好一点,因为它可以做出一些 Qt 特定的假设(不依赖于 RTTI)。

你可以这样使用它:

if(QPushButton *pb = qobject_cast<QPushButton*>(widget)) {
    // it's a "QPushButton", do something with pb here
}
// etc

I would suggest using qobject_cast https://doc.qt.io/qt-5/qobject.html#qobject_cast

It works like dynamic_cast but is a little better since it can make some Qt specific assumptions (doesn't depend on RTTI).

You can use it like this:

if(QPushButton *pb = qobject_cast<QPushButton*>(widget)) {
    // it's a "QPushButton", do something with pb here
}
// etc
扬花落满肩 2024-11-20 11:43:35

您可以编写以下实用函数:

bool IsCheckBox(const QWidget *widget)
{
   return dynamic_cast<const QCheckBox*>(widget) != 0;
}
bool IsComboBox(const QWidget *widget)
{
   return dynamic_cast<const QComboBox*>(widget) != 0;
}

或者,您可以使用 typeid 来确定单元格中对象的运行时类型

编辑:

正如@Evan在评论中指出的,您还可以使用 qobject_cast来转换对象,而不是 dynamic_cast。请参阅此处的示例。

You can write following utility functions:

bool IsCheckBox(const QWidget *widget)
{
   return dynamic_cast<const QCheckBox*>(widget) != 0;
}
bool IsComboBox(const QWidget *widget)
{
   return dynamic_cast<const QComboBox*>(widget) != 0;
}

Or maybe, you can use typeid to determine the runtime type of the object in the cell.

EDIT:

As @Evan noted in the comment, you can also use qobject_cast to cast the object, instead of dynamic_cast. See the examples here.

听你说爱我 2024-11-20 11:43:35

您可以使用 QObject::className() 来获取小部件的类型。

You can use QObject::className() to get the type of the widget.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文