Qt 实现两个Combo Box关联(Qt学习笔记)
城市的下拉框会随着省份的选择而改变
中文乱码+常量中有换行符问题可参考链接: link.
实现如图:
代码实现部分
添加ProvinceBox的槽,捕捉currentIndexChanged(int)信号
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void OnSelectChanged();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#pragma execution_character_set("utf-8") //防止中文乱码
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->ProvinceBox,SIGNAL(currentIndexChanged(int)),this,SLOT(OnSelectChanged()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::OnSelectChanged()
{
if(ui->ProvinceBox->currentIndex() == 0){ //判断选择的为第0项
ui->CityBox->clear(); //清除ComboBox中的内容
ui->CityBox->addItem("石家庄"); //添加下拉列表项
ui->CityBox->addItem("保定");
ui->CityBox->addItem("唐山");
}else if(ui->ProvinceBox->currentIndex() == 1){
ui->CityBox->clear();
ui->CityBox->addItem("西安");
ui->CityBox->addItem("宝鸡");
ui->CityBox->addItem("咸阳");
}else if(ui->ProvinceBox->currentIndex() == 2){
ui->CityBox->clear();
ui->CityBox->addItem("郑州");
ui->CityBox->addItem("驻马店");
ui->CityBox->addItem("安阳");
}
}