Spec-Zone.ru › Qt 6.0

Класс QUiLoader

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

Заголовок: #include <QUiLoader>
CMake: find_package(Qt6 COMPONENTS UiTools REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::UiTools)
qmake: QT += uitools
Наследуется от: QObject
  • Список всех членов, включая наследуемые

Открытые функции

QUiLoader(QObject *parent = nullptr)
virtual ~QUiLoader() override
void addPluginPath(const QString &path)
QStringList availableLayouts() const
QStringList availableWidgets() const
void clearPluginPaths()
virtual QAction * createAction(QObject *parent = nullptr, const QString &name = QString())
virtual QActionGroup * createActionGroup(QObject *parent = nullptr, const QString &name = QString())
virtual QLayout * createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())
virtual QWidget * createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())
QString errorString() const
bool isLanguageChangeEnabled() const
QWidget * load(QIODevice *device, QWidget *parentWidget = nullptr)
QStringList pluginPaths() const
void setLanguageChangeEnabled(bool enabled)
void setWorkingDirectory(const QDir &dir)
QDir workingDirectory() const

Подробное описание

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

Если у вас есть пользовательский компонент или приложение, которое встраивает 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 = nullptr)

Создает загрузчик формы с указанным parent.

[override virtual] QUiLoader::~QUiLoader()

Уничтожает загрузчик.

void QUiLoader::addPluginPath(const QString &path)

Добавляет указанный path в список путей, в которых загрузчик будет искать плагины.

См. также pluginPaths() и clearPluginPaths().

QStringList QUiLoader::availableLayouts() const

Возвращает список, содержащий имена всех доступных макетов, которые можно создать с помощью функции createLayout().

См. также createLayout().

QStringList QUiLoader::availableWidgets() const

Возвращает список, содержащий имена всех доступных виджетов, которые можно создать с помощью функции createWidget(), т.е. все виджеты, указанные в заданных путях плагинов.

См. также pluginPaths() и createWidget().

void QUiLoader::clearPluginPaths()

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

См. также addPluginPath() и pluginPaths().

[virtual] QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())

Создает новое действие с указанным parent и name.

Функция также используется внутренне классом QUiLoader всякий раз, когда он создаёт виджет. Таким образом, вы можете подклассифицировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что вы сначала вызываете версию QUiLoader.

См. также createActionGroup(), createWidget() и load().

[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())

Создаёт новую группу действий с указанным parent и name.

Функция также используется внутренне классом QUiLoader всякий раз, когда он создаёт виджет. Таким образом, вы можете подклассифицировать QUiLoader и переопределить эту функцию, чтобы вмешаться в процесс построения пользовательского интерфейса или виджета. Однако в вашей реализации убедитесь, что вы сначала вызываете версию QUiLoader.

См. также createAction(), createWidget() и load().

[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())

Создает новый макет с заданным parent и name, используя класс, указанный в className.

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

См. также createWidget() и load().

[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())

Создаёт новый виджет с заданным parent и name, используя класс, указанный в className. Вы можете использовать эту функцию для создания любого из виджетов, возвращаемых функцией availableWidgets().

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

См. также availableWidgets() и load().

[since 5.0] QString QUiLoader::errorString() const

Возвращает удобочитаемое описание последней ошибки, возникшей в load().

Эта функция была введена в Qt 5.0.

См. также load().

bool QUiLoader::isLanguageChangeEnabled() const

Возвращает true, если динамическое перевычисление при изменении языка включено; в противном случае возвращает false.

См. также setLanguageChangeEnabled().

QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)

Загружает форму из заданного device и создаёт новый виджет с заданным parentWidget для размещения его содержимого.

См. также createWidget() и errorString().

QStringList QUiLoader::pluginPaths() const

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

См. также addPluginPath() и clearPluginPaths().

void QUiLoader::setLanguageChangeEnabled(bool enabled)

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

См. также 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/qt-6.0/quiloader.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API