Programming/qt2026. 5. 21. 14:57

combobox 추가하고

 

추가된 애를 더블 클릭하면

 

Edit Combobox 라고 뜨는데

여기에 한줄씩 추가해서 넣으면 된다.

 

그나저나.. 왜 프로퍼티 창에서 바로 넣을수 있는 곳은 없는걸까?

[링크 : https://dibrary.tistory.com/21]

 

아래는 GPT가 짜준거

일단 값이 변경되는 이벤트에서 언어 파일을 읽게 하고,

changeEvent()를 오버라이드 해서 언어 변경 이벤트에 대해서 적용하고

combobox의 시그날 발생을 잠시 막고(갱신되면서 0번 인덱스로 가는것 방지)

이전의 인덱스를 복구해주고, 시그널 발생을 다시 가능하게 해주는 식으로 끝. 천잰데?

protected:
    void changeEvent(QEvent *event) override;

 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->s
// Connect combobox signal
    connect(ui->comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &Widget::on_comboBox_currentIndexChanged);
}

void Widget::changeEvent(QEvent *event)
{
    if (event->type() == QEvent::LanguageChange) {
        int currentIndex = ui->comboBox->currentIndex();
        ui->comboBox->blockSignals(true);
        ui->retranslateUi(this);
        ui->comboBox->setCurrentIndex(currentIndex);
        ui->comboBox->blockSignals(false);
    }
    QWidget::changeEvent(event);
}

void Widget::on_comboBox_currentIndexChanged(int index)
{
    QString langFile;
    switch(index) {
        case 0: langFile = "untitled_ko_KR"; break;
        case 1: langFile = "untitled_en_US"; break;
        case 2: langFile = "untitled_el_GR"; break;
        case 3: langFile = "untitled_fr_FR"; break;
        case 4: langFile = "untitled_es_ES"; break;
        case 5: langFile = "untitled_pt_PT"; break; // Note: combo says polish but translations exist for pt_PT
        case 6: langFile = "untitled_sk_SK"; break;
        case 7: langFile = "untitled_ru_RU"; break;
        default: langFile = "untitled_en_US"; break;
    }
    
    if (m_translator.load(":/i18n/" + langFile)) {
        qApp->installTranslator(&m_translator);
    }
}

'Programming > qt' 카테고리의 다른 글

qt widget 에서 배경화면 스타일 시트 적용 안될 경우  (0) 2026.05.20
QT 런타임중 언어 변경  (0) 2026.05.14
QT QMainWindow, QWidget, QDialog  (0) 2026.05.14
QT 창관리  (0) 2026.05.13
QString arg()  (0) 2026.05.13
Posted by 구차니