QT TableWidget にドロップダウン ボックス、チェック ボックス、その他の操作を追加する

Qt TableWidget にドロップダウン ボックスとチェック ボックスを追加する

1. ドロップダウン ボックス (comboBox) を追加し、内容と中央揃えを設定します。
2. TableWidget でドロップダウン ボックスの添え字を取得します。
3. TableWidget でドロップダウン ボックスの添え字を設定します。
4.チェックボックス(checkBox)とセンタリングを設定
5.TableWidgetに追加されたCheckboxの状態を取得

1. 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 効果

ここに画像の説明を挿入
ここに画像の説明を挿入

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

3. 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);
}

4. 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) にチェックボックスを追加しました。テキストはありません。デフォルトでは選択されていません。

5. 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
おすすめ