この記事では、ComboBoxドロップダウンオプションを無効にする2つの方法を提供します。1つはすべてを無効にする方法、もう1つは個別に無効にする方法です。
1すべて無効にする
機能:ComboBoxがドロップダウンオプションを選択できないようにする
実装:ComboBox親クラスQWidgetのsetEnabled()メソッドを呼び出します
// 禁用/启用下拉框
// status: true 为启用, false为禁用
// 封装成函数使用
void Widget::ban_All_comboxSelect(bool status)
{
ui->comboBox_comport->setEnabled(status);
ui->comboBox_dataBit->setEnabled(status);
ui->comboBox_stopBit ->setEnabled(status);
ui->comboBox_boudrate ->setEnabled(status);
ui->comboBox_checkBit ->setEnabled(status);
}
// 也可在Widget回调函数中单个使用
// true 为启用, false为禁用
ui->comboBox_comport->setEnabled(false);
表示効果を得るには、それをQPushButtonに関連付け、次の関数も実装します。
- ボタンをクリックして「シリアルポートを開く」を表示し、もう一度クリックして「シリアルポートを閉じる」を表示します
- QLabelラベルを円に設定します
- 「シリアルポートを開く」の前のラベルは赤で表示され、シリアルポートを閉じるときの側面のラベルは黒で表示されます
connect(ui->pushButton_serialPort,&QPushButton::clicked, [=](){
// 打开串口
if(serialPort_switch_flag == 0)
{
// 禁用下拉框
ban_All_comboxSelect(false);
//设置标签颜色
const QString label_style_red =
"min-width:30px;min-height:30px;max-width:30px;max-height:30px;border-radius:15px;border:1px solid black;background:red";
ui->label_openPortFlag->setStyleSheet(label_style_red);
// 改变按钮显示的数据
ui->pushButton_serialPort->setText("关闭串口");
serialPort_switch_flag = 1;
}else {
// 启用下拉框
ban_All_comboxSelect(true);
//设置标签颜色
ui->label_openPortFlag->setStyleSheet(label_style_balck);
// 改变按钮显示的数据
ui->pushButton_serialPort->setText("打开串口");
serialPort_switch_flag = 0;
}
});
表示効果は次のとおりです。
明らかに、シリアルポートを開くと、すべてのコンボボックスが無効になります。
2つの個別のオプションが無効になっています
機能:ComboBoxのドロップダウンオプションを選択不可にします
実装:ComboBoxのsetItemData()メソッドを呼び出します
// 禁用某一下拉框中的某一项
// combox 为需要操作的 QComboBox 对象
// index 为需要操作 QComboBox 对象的下拉项对应的索引
// status true为启用,false为禁用
void Widget::ban_Aitem_comboxSelect(QComboBox * combox,int index, bool status)
{
if(status)
{
QVariant v_enable(1 | 32);
combox->setItemData(index, v_enable, Qt::UserRole - 1);
}else {
QVariant v_disable(0);
combox->setItemData(index, v_disable, Qt::UserRole - 1);
}
}
メソッドの呼び出し:
connect(ui->pushButton_serialPort,&QPushButton::clicked, [=](){
// 打开串口
if(serialPort_switch_flag == 0)
{
// 禁用下拉框
// ban_All_comboxSelect(false);
ban_Aitem_comboxSelect(ui->comboBox_comport,1, false);
//设置标签颜色
const QString label_style_red =
"min-width:30px;min-height:30px;max-width:30px;max-height:30px;border-radius:15px;border:1px solid black;background:red";
ui->label_openPortFlag->setStyleSheet(label_style_red);
// 改变按钮显示的数据
ui->pushButton_serialPort->setText("关闭串口");
serialPort_switch_flag = 1;
}else {
// 启用下拉框
// ban_All_comboxSelect(true);
ban_Aitem_comboxSelect(ui->comboBox_comport,1, true);
//设置标签颜色
ui->label_openPortFlag->setStyleSheet(label_style_balck);
// 改变按钮显示的数据
ui->pushButton_serialPort->setText("打开串口");
serialPort_switch_flag = 0;
}
});
表示効果:
もちろん、シリアルポートを開いた後はCOM2を選択できません!
ヘッダーファイルの宣言に注意してください。
// 串口开关显示
unsigned char serialPort_switch_flag=0;
// 禁用下拉框所有选项
void ban_All_comboxSelect(bool status);
// 禁用下拉框某一选项
void ban_Aitem_comboxSelect(QComboBox * combox,int index, bool status);