2010-06-14 2 views
2

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

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

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

EDIT: Как я уже сказал, мне нужно пройти через код, но в этом случае возможно создание всех других компонентов, таких как textEdit, ярлыки, кнопки и добавление combobox с использованием кода. Потому что я уже разработал код для закладок и добавил функцию папки в уже существующую вещь.

Спасибо за предложения. Наконец-то я придумал решение. Я использовал множественную реализацию наследования файла UI, созданного 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 
} 

ответ

4

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

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

Как вы можете хранить ваши папки в векторе? Как струны?

Il ваш QVector является содержащими строки, вы можете легко превратить его в QStringList и использовать его для заполнения Вашего выпадающий:

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

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

+0

спасибо, я получил его работу –

1

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

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

Вы можете установить значение в поле со списком, как это:

Пусть вектор содержит имена папок в виде строк и называются папки.

для (INT I = 0; я < folders.count(); я ++)
{
comboBox.addItem (папки.в (я));
}

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

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