繁体   English   中英

如何在qt中将字符串转换为qwidget

[英]how to convert string as qwidget in qt

如何在qt中将字符串转换为qwidget。 动态必须访问.. 任何其他方法都必须将字符串转换为 QWidget。

示例代码:

QWidget *widget1 = new QWidget();
QWidget *widget2 = new QWidget();

QPushButton *next = new QPushButton("next");
QPushButton *prev = new QPushButton("prev");

stack->addWidget(widget1);
stack->addWidget(widget2);

stack->setCurrentIndex(0);

QObject::connect(next, SIGNAL(clicked()), this, SLOT(NextBt()));

QObject::connect(prev, SIGNAL(clicked()), this, SLOT(PrevBt()));

void MainWindow::NextBt()
{

std::string str1 = "widget" + std::to_string(1);
QString str = str1.c_str();    // "widget1"

//How to implement QWidget object as conversion of String here.
//for dynamically i want to remove the already added widget.

stack->removeWidget(str);
str->deleteLater();
stack->setCurrentIndex(1);

}
QWidget *your_widget = parentWidget->findChild<QWidget *>("widget1");

if(your_widget != 0)
{
    //do whatever you want
}

QObject::findChild()

返回此对象的子项,该子项可以转换为类型 T 并称为 name,如果没有此类对象,则返回 0。 省略 name 参数会导致匹配所有对象名称...

不要忘记为要查找的小部件设置父级。 还需要为对象设置一个名称。 例如

QWidget *widget1 = new QWidget(this);
widget1->setObjectName("widget1");

您可以使用QObject::findChildren()检查某个小部件的所有子部件:

返回此对象的所有具有可以转换为类型 T 的给定名称的子项,如果没有此类对象,则返回空列表...

您还可以通过字符串访问对象的方法,例如:

QMetaObject::invokeMethod(thread, "quit", // invoke the quit() method of QThread
                          Qt::QueuedConnection);

QMetaObject::invokeMethod

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM