gpt4 book ai didi

c++ - 如何知道 QTabWidget 选项卡持有什么对象类型?

转载 作者:行者123 更新时间:2023-11-28 02:24:08 25 4
gpt4 key购买 nike

假设有 3 个类 Foo1Foo2Foo3。它们都是继承QWidget。我现在将它们中的每一个都放在一个 QTabWidget 对象中。

QWidget* foo1 = new Foo1();
ui->tbMain->addTab(foo1, "Untitled*");

QWidget* foo2 = new Foo2();
ui->tbMain->addTab(foo2, "Untitled*");

QWidget* foo3 = new Foo3();
ui->tbMain->addTab(foo3, "Untitled*");

现在我选择了不同的选项卡并发出了一个信号,这个插槽捕获了它:

void MainWindow::on_tbMain_currentChanged(int index)
{
QWidget* widget = ui->tbMain->widget(index);
}

我可以检索当前选定选项卡中的对象。但我可以将它检索为 QWidget,我需要知道它是 Foo1Foo2 还是 Foo3 类型?我怎样才能做到这一点?我会感谢所有帮助!

最佳答案

您可以使用 ->metaObject()->className() 访问原始类名

例子:

QWidget* foo1 = new Foo1();
qDebug() << foo1->metaObject()->className();

// will print "Foo1"

if(QString(foo1->metaObject()->className()) == "Foo1") {
Foo1* f1 = qobject_cast<Foo1*>(foo1)
}

或使用 qobject_cast<>并检查返回值。

QWidget* foo2 = new Foo2();
Foo1* f2 = qobject_cast<Foo1*>(foo2);

// f2 == NULL

关于c++ - 如何知道 QTabWidget 选项卡持有什么对象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com