Класс QUiLoader
Класс QUiLoader позволяет автономным приложениям динамически создавать пользовательские интерфейсы во время выполнения, используя информацию, хранящуюся в файлах пользовательского интерфейса или указанную в путях плагинов. Подробнее...
| Заголовок: | #include <QUiLoader> |
| qmake: | QT += uitools |
| Наследуется от: | QObject |
Открытые функции
| QUiLoader(QObject *parent = Q_NULLPTR) | |
| virtual | ~QUiLoader() |
| void | addPluginPath(const QString &path) |
| QStringList | availableLayouts() const |
| QStringList | availableWidgets() const |
| void | clearPluginPaths() |
| virtual QAction * | createAction(QObject *parent = Q_NULLPTR, const QString &name = QString()) |
| virtual QActionGroup * | createActionGroup(QObject *parent = Q_NULLPTR, const QString &name = QString()) |
| virtual QLayout * | createLayout(const QString &className, QObject *parent = Q_NULLPTR, const QString &name = QString()) |
| virtual QWidget * | createWidget(const QString &className, QWidget *parent = Q_NULLPTR, const QString &name = QString()) |
| QString | errorString() const |
| bool | isLanguageChangeEnabled() const |
| QWidget * | load(QIODevice *device, QWidget *parentWidget = Q_NULLPTR) |
| QStringList | pluginPaths() const |
| void | setLanguageChangeEnabled(bool enabled) |
| void | setWorkingDirectory(const QDir &dir) |
| QDir | workingDirectory() const |
- 31 открытых функций унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство унаследованное от QObject
- 1 открытый слот унаследованный от QObject
- 2 сигнала унаследованные от QObject
- 11 статические открытые члены унаследованные от QObject
- 9 защищенные функции унаследованные от QObject
Подробное описание
Класс QUiLoader позволяет автономным приложениям динамически создавать пользовательские интерфейсы во время выполнения, используя информацию, хранящуюся в файлах пользовательского интерфейса или указанную в путях плагинов.
Кроме того, вы можете настроить или создать свой собственный пользовательский интерфейс, создав свой собственный класс загрузчика.
Если у вас есть пользовательский компонент или приложение, которое встраивает Qt Designer, вы также можете использовать класс QFormBuilder, предоставленный модулем QtDesigner, для создания пользовательских интерфейсов из файлов пользовательского интерфейса.
Класс QUiLoader предоставляет набор функций, позволяющих создавать виджеты на основе информации, хранящейся в файлах пользовательского интерфейса (созданных с помощью Qt Designer) или доступных в указанных путях плагинов. Указанные пути плагинов можно получить с помощью функции pluginPaths(). Аналогично, содержимое файла пользовательского интерфейса можно получить с помощью функции load(). Например:
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
QUiLoader loader;
QFile file(":/forms/myform.ui");
file.open(QFile::ReadOnly);
QWidget *myWidget = loader.load(&file, this);
file.close();
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(myWidget);
setLayout(layout);
} Включив пользовательский интерфейс в ресурсы формы (myform.qrc), мы гарантируем, что он будет присутствовать во время выполнения:
<!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="/forms"> <file>myform.ui</file> </qresource> </RCC>
Функция availableWidgets() возвращает QStringList с именами классов виджетов, доступных в указанных путях плагинов. Для создания этих виджетов просто используйте функцию createWidget(). Например:
QWidget *loadCustomWidget(QWidget *parent)
{
QUiLoader loader;
QWidget *myWidget;
QStringList availableWidgets = loader.availableWidgets();
if (availableWidgets.contains("AnalogClock"))
myWidget = loader.createWidget("AnalogClock", parent);
return myWidget;
} Чтобы сделать пользовательский виджет доступным для загрузчика, вы можете использовать функцию addPluginPath(); чтобы удалить все доступные виджеты, вы можете вызвать функцию clearPluginPaths().
Функции createAction(), createActionGroup(), createLayout() и createWidget() используются внутри класса QUiLoader всякий раз, когда ему нужно создать действие, группу действий, макет или виджет соответственно. По этой причине вы можете подклассировать класс QUiLoader и переопределить эти функции, чтобы вмешаться в процесс построения пользовательского интерфейса. Например, вы можете захотеть получить список созданных действий при загрузке формы или создать пользовательский виджет.
Полный пример использования класса QUiLoader см. в примере «Калькулятор Builder».
См. также Qt UI Tools и QFormBuilder.
Документация по функциям-членам
QUiLoader::QUiLoader(QObject *parent = Q_NULLPTR)
Создает загрузчик форм с заданным parent.
[virtual] QUiLoader::~QUiLoader()
Уничтожает загрузчик.
void QUiLoader::addPluginPath(const QString &path)
Добавляет указанный path в список путей, в которых загрузчик будет искать плагины.
См. также pluginPaths() и clearPluginPaths().
QStringList QUiLoader::availableLayouts() const
Возвращает список имён всех доступных макетов, которые можно создать с помощью функции createLayout().
Эта функция была введена в Qt 4.5.
См. также createLayout().
QStringList QUiLoader::availableWidgets() const
Возвращает список имён всех доступных виджетов, которые можно создать с помощью функции createWidget(), т.е. все виджеты, указанные в заданных путях плагинов.
См. также pluginPaths() и createWidget().
void QUiLoader::clearPluginPaths()
Очищает список путей, в которых загрузчик будет искать плагины.
См. также addPluginPath() и pluginPaths().
[virtual] QAction *QUiLoader::createAction(QObject *parent = Q_NULLPTR, const QString &name = QString())
Создаёт новое действие с заданным parent и name.
Функция также используется внутри класса QUiLoader всякий раз, когда создаётся виджет. Поэтому вы можете подклассировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что сначала вызывается версия QUiLoader.
См. также createActionGroup(), createWidget() и load().
[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = Q_NULLPTR, const QString &name = QString())
Создаёт новую группу действий с заданным parent и name.
Функция также используется внутренне классом QUiLoader всякий раз, когда он создаёт виджет. Таким образом, вы можете подклассировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что вы сначала вызываете версию QUiLoader.
См. также createAction(), createWidget() и load().
[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = Q_NULLPTR, const QString &name = QString())
Создаёт новый макет с заданным parent и name, используя класс, указанный в className.
Функция также используется внутренне классом QUiLoader всякий раз, когда он создаёт виджет. Таким образом, вы можете подклассировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что вы сначала вызываете версию QUiLoader.
См. также createWidget() и load().
[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = Q_NULLPTR, const QString &name = QString())
Создаёт новый виджет с заданным parent и name, используя класс, указанный в className. Вы можете использовать эту функцию для создания любого из виджетов, возвращаемых функцией availableWidgets().
Функция также используется внутренне классом QUiLoader всякий раз, когда он создаёт виджет. Таким образом, вы можете подклассировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что вы сначала вызываете версию QUiLoader.
См. также availableWidgets() и load().
QString QUiLoader::errorString() const
Возвращает удобочитаемое описание последней ошибки, произошедшей в load().
Эта функция была добавлена в Qt 5.0.
См. также load().
bool QUiLoader::isLanguageChangeEnabled() const
Возвращает true, если динамическое переопределение при смене языка включено; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.5.
См. также setLanguageChangeEnabled().
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = Q_NULLPTR)
Загружает форму из заданного device и создаёт новый виджет с заданным parentWidget для размещения его содержимого.
См. также createWidget() и errorString().
QStringList QUiLoader::pluginPaths() const
Возвращает список путей, в которых загрузчик будет искать, когда обнаружит плагины пользовательских виджетов.
См. также addPluginPath() и clearPluginPaths().
void QUiLoader::setLanguageChangeEnabled(bool enabled)
Если enabled равно true, пользовательские интерфейсы, загруженные этим загрузчиком, будут автоматически перепереведены при получении события изменения языка. В противном случае пользовательские интерфейсы не будут переведены.
Эта функция была добавлена в Qt 4.5.
См. также isLanguageChangeEnabled().
void QUiLoader::setWorkingDirectory(const QDir &dir)
Устанавливает рабочую директорию загрузчика в dir. Загрузчик будет искать другие ресурсы, такие как значки и файлы ресурсов, по путям, относительным к этой директории.
См. также workingDirectory().
QDir QUiLoader::workingDirectory() const
Возвращает рабочую директорию загрузчика.
См. также setWorkingDirectory().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/quiloader.html