QComboBox
으로 이상한 동작이 발생했습니다. 기본적으로 currentIndexChanged 신호를 수신 한 다음 해당 인덱스를 기반으로 초 단위로 QComboBox
이 채워집니다. QStrList
이 채워집니다. 내 문제는 두 번째입니다 QComboBox
정상적으로 채워지지만 항목을 클릭하기 전까지는 텍스트가 올바르게 표시되지 않습니다, 그때 나타납니다, 나는 QComboBox
을 채울 슬롯을 사용합니다.QComboBox가 올바르게 추가 된 항목을 표시하지 않습니다.
InfoEmployer::InfoEmployer(QWidget *parent) :
QDialog(parent),
ui(new Ui::InfoEmployer)
{
ui->setupUi(this);
ui->gradeCombo->addItem("");
ui->gradeCombo->addItem("200");
ui->gradeCombo->addItem("300");
ui->gradeCombo->addItem("400");
ui->gradeCombo->addItem("500");
ui->gradeCombo->addItem("600");
ui->gradeCombo->addItem("700");
QStringList levels;
levels << "10" << "20" << "30" << "40" << "50" << "60" << "70" << "80" << "90" << "100" << "110" << "120";
m_levelsContainer[0] = levels;
levels.clear();
levels << "11" << "22" << "33" << "44" << "55" << "66" << "77" << "88" << "99" << "110" << "120" << "131";
m_levelsContainer[1] = levels;
levels.clear();
levels << "12" << "24" << "36" << "48" << "60" << "72" << "84" << "96" << "108" << "120" << "132" << "144";
m_levelsContainer[2] = levels;
levels.clear();
levels << "13" << "26" << "39" << "53" << "66" << "79" << "92" << "105" << "118" << "132" << "145" << "158";
m_levelsContainer[3] = levels;
levels.clear();
levels << "14" << "29" << "43" << "58" << "72" << "86" << "101" << "115" << "130" << "144" << "158" << "173";
m_levelsContainer[4] = levels;
levels.clear();
levels << "16" << "32" << "47" << "63" << "79" << "95" << "110" << "126" << "142" << "158" << "173" << "189";
m_levelsContainer[5] = levels;
levels.clear();
connect(ui->gradeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(getGradeLevels(int)));
}
// The slot
void InfoEmployer::getGradeLevels(int indx)
{
if(indx != 0)
{
ui->levelCombo->clear();
QStringList levels = m_levelsContainer[indx - 1];
for(int i = 0; i < levels.length(); ++i)
ui->levelCombo->addItem(levels[i]);
}
}
이 문제는 프로그래밍 방식으로 QComboBox
을 채울 때만 발생합니다.
UPDATE
나는 문제가 내 코드에없는 것을 발견,하지만 QComboBox
입니다! QComboBox
에 10 개 이상의 항목을 삽입하면 올바르게 표시되지 않습니다. 10 개 미만의 항목을 삽입하면 모든 항목이 올바르게 표시됩니다. 내 Qt 버전이 5.0.2이고 MinGW 4.7 인 경우 테스트하고 확인하십시오.
user2644295, 귀하의 코드에 아무런 문제가 없습니다. 제발, 당신 문제가 무엇인지 다시 설명해 주시겠습니까? 당신이 의미하는 것이 _ "... ... 항목을 클릭 할 때까지 텍스트를 올바르게 보여주지 않으면 나타납니다."_ 두 번째 'QComboBox'가 시작될 때 그 값이 포함되어 있지 않습니다. 그것을 초기화하지 않습니다. 'ui-> gradeCombo'의'currentIndexChanged (int)'시그널이 처음으로 나왔을 때 처음으로 채워집니다. – mhcuervo
@mhcuervo 내 응용 프로그램이 시작되면 gradeCombo의 마녀가 첫 번째 QComboBox이고 두 번째 QComboBox (levelCombo)를 채우는 값을 기준으로 선택했습니다. 내 문제는 내가 항목을 클릭 할 때까지 텍스트가 보이지 않는다는 것입니다. 두 번째 'QComboBox'를 드롭하면 여전히 채워지지만 텍스트는 보이지 않습니다. 네가 나를 이해하기를 바란다. – user2644295
이제 알겠습니다. 테스트 프로젝트를 준비했고 모든 것이 제대로 실행됩니다. 나는'gradeCombo'에 시작 값을 설정하기 위해'ui-> gradeCombo-> setCurrentIndex();'를 호출하고'levelCombo'의 값은 올바르게 표시됩니다. connect (ui-> gradeCombo, SIGNAL (currentIndexChanged (int)), this, SLOT (getGradeLevels (int)))'신호를 연결 한 후에'setCurrentIndex() – mhcuervo