Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Executar QMainWindow com QUiLoader
Qt 6.11 is out! See what's new in the release blog

Executar QMainWindow com QUiLoader

Scheduled Pinned Locked Moved Portuguese
2 Posts 1 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    Exotic_Devel
    wrote on last edited by
    #1

    Olá,

    Nos exemplos encontrados na documentação do QUiLoader; a chamada da interface através do arquivo .ui é feita dessa forma:

    @MainWindow::MainWindow(QWidget *parent):QWidget(parent)
    {
    QUiLoader loader;
    QFile file_ui("Forms/MainWindow.ui");
    file_ui.open(QIODevice::ReadOnly);
    QWidget *mainwindow = loader.load(&file_ui, this);

    QVBoxLayout *layout = new QVBoxLayout();
    layout->addWidget(mainwindow);
    setLayout(layout);
    

    }
    @

    As primeiras linhas do bloco, antes da quebra de linha, ok, abre o arquivo .ui e o transforma em um objeto QWidget. A confusão para mim está nas ultimas três linhas, onde se cria um layou, adiciona o objeto criado com QUiLoader no layout, depois seta esse layout no Widget principal.

    Mas e se o elemento criado com o designer for uma QMainWindow, com menus, botões, etc... já adicionados todos os layouts para organização dos componentes?

    Nesse caso não consigo ver a lógica, QMainWindow, já é o widget principal, não vejo lógica em ter que, criar um novo widget, definir o layout e adicionar o QMainWindow dentro de outro Widget?

    1 Reply Last reply
    0
    • E Offline
      E Offline
      Exotic_Devel
      wrote on last edited by
      #2

      Consegui chamando direto de Main.cpp

      @#include <QApplication>
      #include <QWidget>
      #include <QUiLoader>
      #include <QFile>

      #include "MainWindow.hpp"

      int main (int argc, char *argv[])
      {
      QApplication app(argc, argv);

      QUiLoader loader;
      QFile file_ui("Forms/MainWindow.ui");
      file_ui.open(QIODevice::ReadOnly);
      QWidget *mainwindow = loader.load(&file_ui);
      mainwindow->show();
      

      /* MainWindow mainwindow;
      mainwindow.show(); */

      return app.exec();
      

      }
      @

      Mas não sei se essa seria a forma mais adequada

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved