Я новичок в Qt и столкнулся с проблемой в моем приложении. Вот что я пытаюсь сделать.
У меня есть класс с QWidget в качестве родителя. Этот класс имеет сетку на нем. Я установил этот виджет как центральный виджет для главного окна. (эта штука работала нормально, хотя этот виджет не центрирован в главном окне.)
Теперь я хотел повернуть этот виджет на 90 градусов, чтобы он мог отображаться на устройстве в ландшафтном режиме. Поэтому я создал графический вид и добавил к нему этот виджет. (создал сцену, добавил к ней виджет и назначил сцену для просмотра.) Затем этот графический вид был повернут и сделан центральным виджетом. это работало удивительно, и было очень хорошо отцентрировано, также хорошо выглядело на устройстве.
Но в окончательной интеграции мы хотим иметь все QWidget, поэтому графическое представление не вариант. Чтобы справиться с этим, я создал члена Qwidget внутри своего класса. применил макет к нему. добавил этот виджет в graphicsView, и мой класс стал для него родителем.
Это также работает, но имеет аналогичную проблему, с которой я столкнулся на первом шаге, она находится в верхнем левом углу MainWindow и не регулируется по центру. Что еще хуже, при развертывании на устройстве он не был применен ко всему экрану. Виджет сидел в какой-то части верхней левой области и имел полосы прокрутки к нему! Я даже попытался установить максимальное состояние окна, но на него это никак не повлияло.
Вот что я попробовал
Виджет создан внутри моего класса и добавлен в графический вид. этот вид имеет мой класс в качестве родителя, и он будет вращаться с использованием rotate api.
m_gridContainer = new QWidget();
m_gridContainer->setAutoFillBackground(true);
m_gridContainer->setPalette(blackPalette);
m_gridContainer->setLayout(m_grid);
m_gridContainer->setMinimumSize(480,265);
m_scene = new QGraphicsScene(0, 0, 480, 265);
m_window = new QGraphicsView(m_scene,this);
m_scene->setBackgroundBrush(brush);
m_window->setAlignment(Qt::AlignCenter);
m_scene->addWidget(m_gridContainer,Qt::Widget);
Чтобы использовать его из главного окна
m_window = new CMyWidget(label, m_txtBox->text());
m_window->getRotatedWidget(90);
setCentralWidget(m_window);
Я попробовал все, что мог, но этот виджет не показывался в полноэкранном режиме (только в небольшой области) и все еще имеет полосы прокрутки к нему. Я понятия не имею, что именно там происходит.