QT TableWidget中添加下拉框、复选框等操作

Qt TableWidget中添加下拉框、复选框

1、添加下拉框(comboBox),并设置内容及居中
2、获取TableWidget中下拉框的下标
3、设置TableWidget中下拉框的下标
4、添加复选框(checkBox),并设置居中
5、获取TableWidget中添加的复选框状态

一、TableWidget中添加下拉框

1.1 源码

//设置comboBox的下拉内容,并设置内容居中
void MainWindow::ComboBoxSetItems(QComboBox *comboBox, QStringList *items)
{
    QListWidget *listWidget = new QListWidget(this);
    QLineEdit *lineEdit = new QLineEdit;

    for(int i=0;i<items->count();i++)
    {
        QListWidgetItem *item = new QListWidgetItem(items->at(i));
        item->setTextAlignment(Qt::AlignCenter);
        listWidget->addItem(item);
    }

    //ComboBox使用listWidget的内容
    comboBox->setModel(listWidget->model());
    comboBox->setView(listWidget);

    lineEdit->setReadOnly(true);
    lineEdit->setAlignment(Qt::AlignCenter);

    comboBox->setLineEdit(lineEdit);
}

//TableWidget中加入下拉框,并设置下拉框的内容及初始下标
void MainWindow::TableWidgetAddComboBox(QTableWidget *tableWidget,int x, int y, QStringList items,int comboBoxIdx)
{
    QComboBox *combox = new QComboBox();
    combox->setStyleSheet("background-color:rgb(255,255,255)");
    MainWindow::ComboBoxSetItems(combox,&items);		//下拉框的内容
    combox->setCurrentIndex(comboBoxIdx);				//下拉框初始下标
    tableWidget->setCellWidget(x,y,(QWidget*)combox);
}

1.2 实际使用

void MainWindow::TableWidget_Init()
{
	QStringList items;

    //静止超时,在TableWidget的(0,1)单元格设置一个下拉框,并设置初始下标为3![请添加图片描述](https://img-blog.csdnimg.cn/a87bcc562ffd483391ef266ee7812df2.png)
    items << tr("关闭") << tr("60秒") << tr("120秒") << tr("180秒") << tr("240秒") << tr("300秒");
    MainWindow::TableWidgetAddComboBox(ui->baseParamInfo_tableWidget,0,0,items,3);
    items.clear();

    //降频唤醒,在TableWidget的(0,1)单元格设置一个下拉框,并设置初始下标为3
    items << tr("关闭") << tr("1秒") << tr("2秒") << tr("3秒") << tr("4秒") << tr("5秒") << tr("6秒") << tr("7秒") << tr("8秒");
    MainWindow::TableWidgetAddComboBox(ui->baseParamInfo_tableWidget,0,1,items,3);
    items.clear();
    
	//无线功率,在TableWidget的(0,2)单元格设置一个下拉框,并设置初始下标为2
    items << tr("自动") << tr("24db") << tr("21db") << tr("18db") << tr("15db") << tr("12db") << tr("9db");
    MainWindow::TableWidgetAddComboBox(ui->baseParamInfo_tableWidget,0,2,items,2);
    items.clear();
}

1.3 效果

在这里插入图片描述
在这里插入图片描述

二、获取TableWidget中下拉框的下标

//获取TableWidget中ComboBox的下标
int MainWindow::getComboBoxCurrIndex_InTableWidget(QTableWidget *tableWidget, int x, int y)
{
    QWidget *widget = tableWidget->cellWidget(x,y);
    QComboBox *combox = (QComboBox*)widget;
    return combox->currentIndex();
}

三、设置TableWidget中下拉框的下标

//设置TableWidget中ComboBox的下标
void MainWindow::setComboBoxCurrIndex_InTableWidget(QTableWidget *tableWidget, int x, int y, int idx)
{
    QWidget *widget = tableWidget->cellWidget(x,y);
    QComboBox *combox = (QComboBox*)widget;
    combox->setCurrentIndex(idx);
}

四、TableWidget中加入复选框

4.1 代码

//TableWidget中加入复选框
void MainWindow::TableWidgetAddCheckBox(QTableWidget *tableWidget, int x, int y, QString text, Qt::CheckState checkState)
{
    QWidget *widget = new QWidget();
    QHBoxLayout *layout = new QHBoxLayout();
    QCheckBox *checkBox = new QCheckBox;

    checkBox->setText(text);                		//复选框文本
    checkBox->setCheckState(checkState);   			//复选框初始状态
    layout->addWidget(checkBox,0,Qt::AlignCenter);	//居中
    layout->setMargin(0);							//左右间距
    widget->setLayout(layout);
    tableWidget->setCellWidget(x,y,widget);
}
//实际使用
//在TableWidget的(0,6)出添加一个复选框,无文本,默认不选择
MainWindow::TableWidgetAddCheckBox(ui->UL_List_tableWidget,0,6,NULL,Qt::Unchecked);

4.2 效果

在(0,6)的位置添加了一个复选框,无文本,默认不选择

五、获取TableWidget中设置的复选框状态

//获取TableWidget中的复选框状态
Qt::CheckState MainWindow::getCheckBoxCurrState_InTableWidget(QTableWidget *tableWidget, int x, int y)
{
    QWidget *widget = tableWidget->cellWidget(x,y);
    QHBoxLayout *layout = qobject_cast<QHBoxLayout *>(widget->layout());
    QCheckBox *checkBox = qobject_cast<QCheckBox *>(layout->itemAt(0)->widget());
    return checkBox->checkState();
}

QtTableWidget添加下拉框可以通过以下步骤实现: 1. 创建一个TableWidget对象,可以通过Qt Designer或编程方式创建。 2. 使用setRowCount()和setColumnCount()方法设置TableWidget的行数和列数。 3. 使用setCellWidget()方法将下拉框添加到指定的单元格。该方法的参数是要添加下拉框对象以及要放置下拉框的单元格的行和列索引。 4. 通过QComboBox类创建一个下拉框对象,并设置下拉框的选项。 5. 使用addItem()方法向下拉框添加选项,可以循环调用该方法来添加多个选项。 6. 使用setStyleSheet()方法设置下拉框的样式,比如设置边框颜色、背景颜色等。 7. 为下拉框添加信号槽连接,以便在选择某个选项时执行相应的操作。 8. 编写槽函数来处理下拉框选项的选择事件,可以使用currentIndexChanged()信号来捕获选项的改变事件。 9. 最后,使用show()方法显示TableWidget。 下面是一个示例代码: ``` #include <QApplication> #include <QTableWidget> #include <QComboBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTableWidget tableWidget; tableWidget.setRowCount(3); tableWidget.setColumnCount(2); for (int row = 0; row < 3; ++row) { for (int column = 0; column < 2; ++column) { QComboBox* comboBox = new QComboBox; comboBox->addItem("Option 1"); comboBox->addItem("Option 2"); comboBox->addItem("Option 3"); tableWidget.setCellWidget(row, column, comboBox); QObject::connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index) { qDebug() << "Selected option:" << comboBox->currentText(); }); } } tableWidget.show(); return a.exec(); } ``` 运行上述代码,将会显示一个包含下拉框TableWidget,你可以选择下拉框的选项,并在控制台输出选项内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值