ComboBox
Em computação, uma caixa de combinação é um elemento de interface gráfica. Um ComboBox permite ao usuário escolher uma das várias opções, pode ter duas formas muito diferentes. A forma padrão é a caixa de combinação não editável, que conta com um botão e uma lista suspensa de valores. A segunda forma, chamada de caixa de combinação editável, possui um campo de texto com um pequeno botão confinando-o. O usuário pode digitar um valor no campo de texto ou clique no botão para exibir uma lista drop-down.
Listwidget
Em computação, uma caixa de listagem é um elemento de interface gráfica. Uma ListBox apresenta ao usuário um grupo de itens, exibidos em uma ou mais colunas. As listas podem ter muitos itens, por isso eles são muitas vezes colocados em painéis de rolagem.
Qt Creator
Para criar um programa como este você precisa aprender alguns pequenos detalhes da interface gráfica e algumas das peculiaridades dos widgets do framework Qt, então siga os seguintes passos:
1 – Crie um novo projeto de Widgets. Arraste para o formulário um componente GroupBox e o redimensione para que caiba todos os outros componentes dentro dele. Você pode notar que o componente está sem as bordas, isto se deve ao fato de que os widgets do Qt são customizáveis e possuem a propriedade StyleSheet para que você possa declarar as modificações que deseja na aparência de cada componente. Abra a propriedade StyleSheet e na janela subsequente e coloque o código como na imagem abaixo:
Sobre Qt StyleSheets: http://qt-project.org/doc/qt-4.8/stylesheet.html
2 – Arraste para a tela 3 widgets Label, um ListWidget e um combobox, mude suas propriedades de texto e os alinhe conforme a figura abaixo:
3 – Após terminar o design crie os Slots de duplo clique para o ListWidget e o de mudança de item para o ComboBox, utilize o código abaixo para completar o seu código gerado automaticamente, visto que utilizamos o construtor da classe para inicializar uma Array com os dados que utilizaremos para os componentes. Clique em Run para rodar o programa.
Para a versão deste programa C++ Windows MFC: clique aqui.
Exemplo:
Neste exemplo usamos um ComboBox e um ListBox para criar um programa C++ e utilizamos os slots para os eventos de cada Widget para interligar suas ações.
C++
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // Inicializa formulario // Cria Array QString itens[] = { "Satisfaction", "Paint it Black", "Wild Horses", "Brown Sugar", "Sympathy for the Devil", "Start Me Up" }; // Alimenta ListBox e Combobox for (int i=0; i < 6; i++) { ui->listWidget->addItem(itens[i]); ui->comboBox->addItem(itens[i]); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_listWidget_doubleClicked(const QModelIndex &index) { // Alimenta texto e Sincroniza combo ui->label->setText("Rolling Stones: " + ui->listWidget->currentItem()->text()); ui->comboBox->setCurrentIndex(ui->listWidget->currentIndex().row()); } void MainWindow::on_comboBox_currentIndexChanged(const QString &arg1) { // Alimenta texto e Sincroniza lista ui->label->setText("Rolling Stones: " + ui->comboBox->currentText()); ui->listWidget->setCurrentRow(ui->comboBox->currentIndex()); }