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