可以通过在QTableWidget中添加QWidget作为单元格的控件来实现这种效果。具体步骤如下:
创建一个QTableWidget,并设置行数和列数。
对于每个单元格,使用以下代码创建一个QWidget对象,并将其设置为该单元格的控件。
// 创建QWidget
QWidget *widget = new QWidget();
// 设置QWidget的布局为QHBoxLayout,用于放置三个按钮
QHBoxLayout *layout = new QHBoxLayout(widget);
widget->setLayout(layout);
// 创建三个QPushButton并添加到QHBoxLayout中
QPushButton *button1 = new QPushButton("Button 1", widget);
QPushButton *button2 = new QPushButton("Button 2", widget);
QPushButton *button3 = new QPushButton("Button 3", widget);
layout->addWidget(button1);
layout->addWidget(button2);
layout->addWidget(button3);
// 将QWidget设置为单元格的控件
tableWidget->setCellWidget(row, col, widget);
为每个按钮添加clicked信号的槽函数,以实现相应的功能。
在一个按钮的clicked信号的槽函数中,控制另外两个按钮的隐藏和显示。
void onButton1Clicked()
{
QPushButton *button1 = qobject_cast<QPushButton*>(sender());
QWidget *widget = button1->parentWidget();
// 获取三个按钮
QPushButton *button2 = widget->findChild<QPushButton*>("Button 2");
QPushButton *button3 = widget->findChild<QPushButton*>("Button 3");
// 隐藏或显示其他两个按钮
if (button2->isVisible() && button3->isVisible()) {
button2->hide();
button3->hide();
} else {
button2->show();
button3->show();
}
}