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();
}

猜你喜欢

转载自blog.csdn.net/qq_36365231/article/details/128429341