2016-09-20 14 views
0

私は2つのオプションの中から選択するために、コンボボックスで入力ダイアログを持っています。QInputDialogからすべてのボタンを削除する方法

void MainWindow::on_UpdateCPUAssmblyBtn_clicked() 
{ 
    if(!ui->AssemblyCpuSN->toPlainText().toStdString().empty()) 
    { 
     QStringList items; 
     items << tr("OUT_FOR_PCB_REPAIR") << tr("PCB_SCRAPPED"); 

     bool ok; 
     std::string scrapcode=""; 
     QInputDialog* inputDialog = new QInputDialog(); 
     inputDialog->setOption(QInputDialog::NoButtons); 

     QString item = inputDialog->getItem(NULL ,"Manufacturing Stage", 
             "Please select the reason for removing the old board :", items, 0,false, 
             &ok); 
     if(ok && !item.isEmpty()) 
     scrapcode=item.toStdString(); 

     /* Do something with scrapcode */    
    } 
    else 
    { 
     QPixmap pix("icons/angry1.png"); 
     mbox->setIconPixmap(pix); 
     mbox->setWindowTitle("ERROR"); 
     mbox->setText("Disassociation is not successful.CPU SN is empty."); 
     mbox->show(); 
    } 
} 

QInputDialogからボタンを削除するにはどうすればよいですか?私は 'NoButtons'フラグを使用していますが、それでも助けにはなりません。他の方法をお勧めします。

答えて

2

QInputDialog::getItemの方法は、static methodです。つまり、インスタンス化されたオブジェクト(つまりinputDialog)とは何の関係もありません。代わりに次のコードスニペットを使用する必要があります。

QInputDialog* inputDialog = new QInputDialog(); 
inputDialog->setOption(QInputDialog::NoButtons); 
inputDialog->setComboBoxItems(items); 
inputDialog->setWindowTitle("Manufacturing Stage"); 
inputDialog->setLabelText("Please select the reason for removing the old board :"); 
inputDialog->show(); 

結果:ダイアログを閉じると

enter image description here

、ユーザーの選択を取得するためにQInputDialog::textValue()メソッドを使用することができます。

+0

ありがとうございます! – Minion

関連する問題