Как обеспечить ввод в диалоги, разработанные Qt Designer - PullRequest
1 голос
/ 14 июня 2010

Я новичок в Qt и работаю с Qt Designer над разработкой некоторых небольших элементов пользовательского интерфейса.Я прочитал http://doc.trolltech.com/4.5/designer-using-a-ui-file.html, чтобы использовать эти элементы GUI в своем коде и использовать подход множественного наследования.

Я представляю функцию закладок, которая выглядит примерно как http://img293.imageshack.us/img293/3041/screenshotyb.png. Теперь проблема, с которой я сталкиваюсь, заключается вКак я могу показать все существующие папки закладок в выпадающем списке (скажем, папки находятся в QVector).Поэтому моя главная проблема заключается в том, как я могу передать некоторые входные данные в элемент пользовательского интерфейса.

Я думаю, что все ясно, пожалуйста, дайте мне знать, если потребуется дальнейшее объяснение.Извините за прямое добавление ссылок, богатое форматирование в моем браузере не работает.

РЕДАКТИРОВАТЬ: Как некоторые предположили, мне нужно пройти через код, но в этом случае возможно, что все остальные компоненты, такие как textEdit, метки, возможно создать, кнопки и добавить комбинированный список с помощью кода.Потому что я уже разработал код для закладок и добавления функции папки в уже существующую вещь.

Спасибо за предложения.Наконец-то я придумал решение.Я использовал множественное наследование файла пользовательского интерфейса, сгенерированного QT Designer.Итак, решение выглядит так:

Dialog.ui will be UI file generated by QtDesigner
//bookmarDialog.h
#include "ui_Dialog.h"
class BookmarkDialog : public QWidget, private Ui::Dialog
{
Q_OBJECT

 public:
     BookmarkDialog (QWidget *parent = 0);
}

//bookmarkDialog.cpp
#include "bookmarkDialog.h"
BookmarkDialog::BookmarkDialog()
 : QWidget(parent)
{
   setupUi(this);

    QList folders = getAllFolders();
    comboBox->insertItems(0,folders);//comboBox is defined in UI file
}

Ответы [ 2 ]

3 голосов
/ 14 июня 2010

С помощью Qt Designer вы можете добавлять элементы в поле со списком (дважды щелкните на поле со списком, чтобы открыть редактор). Но если ваш список папок будет отличаться, вам придется делать это по коду.

Ознакомьтесь с QCombobox документацией (Qt doc действительно хорош).

Как вы храните свои папки в векторе? Как строки?

Если ваш QVector содержит строки, вы можете легко преобразовать его в QStringList и использовать его для заполнения поля со списком:

QVector<QString> FolderList;    
myComboBox->addItems(FolderList.toList());

Затем вы можете подключить сигнал currentIndexChanged(const QString&) вашего QComboBox к слоту, чтобы что-то делать, когда папка изменилась.

0 голосов
/ 14 июня 2010

Я думаю, вы должны сделать это в коде.Вы можете заполнить поле со списком в конструкторе, как только вы используете статические значения.Это то, что вы делаете динамически, например, получение папок с закладками, тогда вы должны делать это в своем коде бизнес-логики.

Возможно, QtDesigner был улучшен со времени моего последнего использования, и теперь можно выполнять сложные вещи, такие какчто, но даже в этом случае, исходя из моего опыта, я бы порекомендовал вам не так сильно зависеть от QtDesigner.Если вы хотите делать сложные вещи, то быстрее делать это в коде, и вы будете совершать меньше ошибок и будете иметь больший контроль над тем, что вы делаете.

Вы можете установить значения в поле со списком следующим образом:

Предположим, что вектор содержит имена папок в виде строк и называется папками.

для (int i = 0; i {
comboBox.addItem (folder.at (i));
}

Если это не то, что вы ищете, дайте мне комментарий, и я постараюсь помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...