1、效果图
2、代码调用示例
CUIRowHoverTableWidget* tableWidget = new CUIRowHoverTableWidget;
tableWidget->SetHoverRowEnabled(true);
tableWidget->SetHoveredRowForeground(Qt::black);
tableWidget->SetHoveredRowBackground(Qt::red);
tableWidget->SetHoveredRowBorderColor(Qt::green);
tableWidget->horizontalHeader()->setStretchLastSection(true);
tableWidget->setSelectionBehavior(QTableView::SelectRows);
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
tableWidget->setShowGrid(false);
tableWidget->horizontalHeader()->setVisible(false);
tableWidget->verticalHeader()->setVisible(false);
tableWidget->setFocusPolicy(Qt::NoFocus);
tableWidget->setRowCount(5); // 例如,5行
tableWidget->setColumnCount(5); // 例如,3列
tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed);
tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
//tableWidget->setColumnHidden(2, true);
tableWidget->setColumnWidth(0, 16);
tableWidget->resize(400, 400);
tableWidget->show();
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 3; ++col)
{
// 创建自定义 Widget
QWidget *widget = new QWidget();
QHBoxLayout *layout = new QHBoxLayout(widget);
QLabel *label = new QLabel(QString("第%1行第%2列").arg(row).arg(col));
QPushButton *button = new QPushButton("Button");
// 若是自定义的窗体,需要设置穿透功能
widget->setStyleSheet("QWidget{outline: none; background:transparent;}");
widget->setAttribute(Qt::WA_TransparentForMouseEvents, true);
layout->addWidget(label);
layout->addWidget(button);
tableWidget->setCellWidget(row, col, widget);
}
}
3、下载
下载