2015-07-09 2 views
3

У меня есть таблица, которая в основном представляет собой QTreeWidget, и я хочу поместить интерактивный виджет, возможно, кнопку внутри него. Каждая строка представляет собой QTreeWidgetItem, но я не вижу, как я могу добавить кнопку с QTreeWidgetItem :: УстановитьДанныеQT Clickable widget (возможно, кнопка) внутри QTreeWidget?

+1

Рассмотрите возможность использования 'QTreeWidget :: setItemWidget()'. – vahancho

+0

@ vahancho родителем в PushButton является QTreeWidgetItem, к которому я устанавливаю его или QTreeWidget? –

+0

'QTreeWidgetItem' не может быть родителем для кнопки. Вы не устанавливаете родителя, поскольку документация говорит: '" Примечание: Дерево берет на себя ответственность за виджет. "'. – vahancho

ответ

5

Вот модификация примера, приведенного в Qt документации для QTreeWidget добавив QPushButton ко второму элементу

ui->treeWidget->setColumnCount(1); 
QList<QTreeWidgetItem *> items; 
for (int i = 0; i < 10; ++i) 
    items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i)))); 
ui->treeWidget->insertTopLevelItems(0, items); 

ui->treeWidget->setItemWidget(items.value(1),0,new QPushButton("Click Me")); // Solution for your problem 

для двух кнопок бок о бок в пределах элемента, вы можете принять этот подход

QWidget *dualPushButtons = new QWidget(); 
QHBoxLayout *hLayout = new QHBoxLayout(); 
hLayout->addWidget(new QPushButton("Button1")); 
hLayout->addWidget(new QPushButton("Button2")); 
dualPushButtons->setLayout(hLayout); 

ui->treeWidget->setItemWidget(items.value(1),0,dualPushButtons); 

вы можете приспособить это, добавляя свойства кнопок и т.д.

+0

Большое спасибо, возможно ли иметь 2 кнопки в одном слоте? Как две маленькие кнопки рядом друг с другом в одном слоте/ячейке таблицы? –

+0

Вы можете создать собственный виджет с двумя кнопками с расположением (макет), который вы хотите, а вместо QPushButton в вышеупомянутом решении вы можете добавить этот виджет 'ui-> treeWidget-> setItemWidget (items.value (1), 0, widgetWithTwoButtons); ' – techneaz

+0

Можете ли это сделать чисто программно или я должен использовать дизайнер пользовательского интерфейса? –