2015-10-23 2 views
1

Что касается Qt, у меня есть вопрос. Я хочу, чтобы пользователь написал слово в текстовом поле «Обычный текст». Когда слово будет записано и курсор будет удален из этого поля, я хочу, чтобы это слово сохранялось в ComboBox. Как можно достичь этого?Как подключить QPlainText к ComboBox в Qt

+0

Предполагается, что вы используете 'QLineEdit' в качестве текстового поля редактирования, есть сигнал' editFinished', который вы можете подключить к слоту и который затем добавляет текущее содержимое 'QLin eEdit' в раскрывающийся список. –

+0

Да, я использую QLineEdit, и теперь мой вопрос: «Как только я подключу editFinished сигнал к слоту, как можно добавить текущее содержимое QLineEdit в выпадающее меню (ComboBox)?» – Sara

ответ

0

Как можно добавить текущее содержимое QLineEdit в выпадающее меню (ComboBox)?

Принято считать, что у вас есть класс, который имеет QLineEdit и QComboBox в качестве членов, и который также имеет слот, который подключен к методу updateDropdown(), как

class MainWindow : public QMainWindow { 
    Q_OBJECT; 

    QLineEdit* lineEdit; 
    QComboBox* dropDown; 

// ... 

public slots: 
    void updateDropdown(); 
}; 

вы можете просто использовать

void MainWindow::updateDropdown() { 
    dropDown->addItem(lineEdit->text()); 
} 
+0

Похоже, что он должен работать, но нет сигнала, указывающего обновление ComboBox в меню «перейти в слот», и откуда происходит updateDropdown()? – Sara

+0

Вы говорите о QtDesigner (вы создаете свой интерфейс с QtDesigner)? 'updateDropdown()' - это метод, который вам нужно реализовать самостоятельно - он похож на то, что @TheBadger показывает в своем андрее, с той разницей, что он использует анонимную функцию (выражение лямбда), которая содержит одну строку кода, которая фактически выполняет эту работу. Это функция C++ 11, хотя и зависит от вашей среды, можете ли вы ее использовать. –

+0

Я пытаюсь использовать код ниже, где элемент необходимо добавить в поле со списком после того, как пользователь закончит вводить текст в строке. программа прерывается каждый раз, когда я заканчиваю ввод строки редактирования. 'void MainWindow :: on_lineEdit_editingFinished() { comboBox-> addItem (lineEdit-> text()); } ' – Sara

2

Подключите редактируемый текст к редактированию в слот (либо пользовательский слот вашего класса, либо функцию лямбда, как показано ниже), и в этом слоте получите текст из редактирования и добавьте его в элементы в поле.

Давайте предположим, что у вас есть C++ 11:

QComboBox *myBox; 
QLineEdit *myEdit; 

connect(myEdit, &QLineEdit::editingFinished, [myBox, myEdit](){ 
    myBox->addItem(myEdit->text()); 
}); 

Вам необходимо обновить код в соответствии с приложением, но выше должно дать вам идею и руководство, что вам нужно.

Смежные вопросы