Qt将"action"添加到动态添加的QWidget中
Qt adding "action" to dynamically added QWidget
在我的ui中,我有一个按钮,当点击时,它会添加QComboBox(带有一些项目)和QLabel(带有一些文本)。变量"index"是添加的QComboBoxes和QLabels的数量。"ol"是带有一些数据的qvector。
void MainWindow::on_iAddOtherButton_clicked()
{
QComboBox *p1 = new QComboBox(this);
p1->setObjectName("comboBox"+QString::number(index));
QLabel *p2 = new QLabel(this);
p2->setObjectName("othLabel"+QString::number(index));
for(int i = 0; i < static_cast<int>(ol.size()); ++i){
p1->addItem(ol.at(i).getName());
ui->otherLayout->addWidget(p1,index+1,0);
}
p2->setText(...some text...));
ui->otherLayout->addWidget(p2,index+1,1);
index++;
}
这很好,在布局中,它们是这样成对的:
Q组合框1 QLabel1
Q组合框2 Q标签2
现在我想更改QComboBox1的值,之后QLabel1的文本将自动更改为其他内容。我试着用connect来实现这一点,但currentTextChanged()
上的QComboBox只发出具有新值的QString。有没有办法发出对象名称+新值?或者还有其他完全的解决方案?
在您的插槽中,您可以调用sender()
来获取指向信号发送者的指针。在此基础上,您可以根据sender()->objectName()
决定下一步要做什么。
您还可以考虑在combobox对象上使用setProperty(...)
来存储指向QLabel实例的指针向量的索引,该向量是类成员。然后,您可以通过调用sender()->property(...)
来检索插槽中的索引,并使用它从向量中访问正确的QLabel小部件。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 在 QOpenGLWidget 上添加一些 QWidget
- 如何将 qwidget 添加到 qlist<qwidget>
- 在运行时添加自定义Qwidget
- 如何向 QWidget 添加插槽
- 将约束添加到Qwidget的CSS文件中
- 缩放QGraphicsView而不缩放已添加到其中的QWidget
- 将设计器中创建的 QWidget 添加到 QToolbar
- 如何将菜单栏添加到 QWidget
- Qt将"action"添加到动态添加的QWidget中
- 在QOpenGLWindow之上添加QWidget
- 为什么如果 QWidget 在屏幕上不可见,我只能在运行时向 QWidget 添加元素?