【问题标题】:Set current index of QComboBox inside QTableWidget在 QTableWidget 中设置 QComboBox 的当前索引
【发布时间】:2020-06-26 09:36:46
【问题描述】:

我在QTableWidget 里面有QComboBox。它是这样创建的:

QComboBox* bb = new QComboBox(this);
ui->propsWidget->setCellWidget(1, 0, bb);
for (...)
    bb.addItem(...);

我需要以编程方式设置它的索引。我试过这个:

QComboBox* bb = qobject_cast<QComboBox*>(ui->propsWidget->cellWidget(1, 0));
bb->setCurrentIndex(5);

还有这个:

bb->setEditText("mytext"); // "mytext" is contained in bb

但当前索引没有改变。我该怎么做?

【问题讨论】:

    标签: c++ qt qt4


    【解决方案1】:

    您需要修改这一行:QComboBox* bb = new QComboBox(this);,因为QTableWidget 拥有其所有子组件的所有权。所以,它必须变成QComboBox* bb = new QComboBox();,而父表本身就是表。

    【讨论】:

    • 那么关闭对话框后怎么删除呢?
    • Qt 有它的销毁机制。当您删除QTableWidget 时,它的所有子项包括QComboBox 也将被自动删除。
    • 谢谢,它有效。但我不明白所有权如何影响对小部件的访问。
    • @MichaelO。当您声明ComboBox* bb = new QComboBox(this); 时,您使组合框成为当前小部件而不是表格小部件的子级。但是,当且仅当小部件是表的子小部件时,tablewidget 中的任何方法都可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多