Qt как сделать окно на весь экран

Добавил пользователь Владимир З.
Обновлено: 11.09.2024

qt4 окно поверх всех других окон (Необходимо открывать окно поверх всех других окон)

qt4 окно поверх всех других окон

Народ нужен код который поможет открыть QMainWindow,QDialog,QWidget поверх всех других окон желательно функциами qt.
Если кто не понял, то задача такая: в момент захода пользователя в систему открывается программка которая спрашивает кто ты, эта программка должна развернуться на весь экран и поверх всех окон. Она должна оставаться поверх всех окон даже в том случае если запускается другая программа. Например терминал.

Для тех кто будет говорить юзай ассистент, отвечу так: такой вариант не прокатил, там есть функция которая указывает windowState но не помогает!

OwnerCoder,

Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)

У меня есть программа Windows и Mac, которая переключается в полноэкранный режим на нескольких мониторах. В Qt 4 кажется (я не могу найти явную документацию о том, как это сделать), как “правильный” способ сделать это, создав N QMainWindow для N мониторов на машине, вызвав QWidget::move() на N наблюдайте верхние левые координаты x, y, а затем вызываете QWidget::setWindowState(Qt::WindowFullScreen) . Я не знаю, является ли это правильным делом – опять же, я не могу найти никакой документации или примеров в любом месте, где это делается в Qt.

Это, по-видимому, “сломан” (если это было когда-либо правильно, что нужно делать в первую очередь) в Qt 5.4.1, особенно в Windows 7. Я все еще пытаюсь изолировать проблему, но похоже QMainWindow выходят из полноэкранного режима.

Просто я понимаю, что это правильный способ сделать это? Я нашел этот форум, который, кажется, предполагает, что я должен устанавливать QScreen на базовые объекты QWindow , которые хранятся в QMainWindow s, но это, похоже, не работает в моих тестах. Вот пример программы, которую я написал:

Когда я запускаю эту программу в OS X, функция “Перейти к экранам Windows” ничего не делает – ни один из окон не перемещается. Также не отображается экран “Windows Go To Primary” (плохо названный – 0)?). Создание более чем N окон в окне N Mac интересен – в этом случае несколько раз вызовы “Windows Fullscreen” фактически переключат QMainWindows в полноэкранный режим по одному!

Еще интереснее то, что происходит на компьютере с несколькими мониторами OS X, когда вы это делаете: “Добавить окно”, пока у вас не будет столько окон, сколько отображается. “Windows Go To Screens (старый метод)” отправит каждое окно в верхнем левом углу каждого монитора. “Windows Fullscreen” сделает все окна в полноэкранном режиме на всех мониторах. “Удалить окно”, пока не останется только 1 окно. Затем “Windows Non-FullScreen”, и вы получите интересный сюрприз. Войдите в Mission Control, чтобы узнать, что происходит.

Может ли кто-нибудь сказать мне, что такое RIGHT способ сделать это? Я просмотрел примеры Qt5 – там игровое приложение, которое, кажется, полностью сломано (он может воспроизводить видео в полноэкранном режиме один раз, а затем последующие игры находятся в отдельном окне рабочего стола), под игра только максимизируется до один дисплей, и ни один из других примеров, похоже, не использует полноэкранный режим и, конечно, не на нескольких мониторах.

Один из способов сделать это в Qt5 – использовать QWindow::setScreen для установки экрана, на котором должно отображаться окно. QWidget имеет windowHandle() , который возвращает указатель на QWindow . Таким образом, вы можете получить этот указатель для каждого окна и установить другой экран.


Репутация: 0

Доброе время суток!
Есть вопрос: как создать виджет в окне у которого нет панели заголовка с именем окна, кнопками "свернуть" "развернуть" "закрыть".
Нужно ещё сделать так чтобы окно сразу было развёрнуто на весь экран
Заранее спасибо


опции профиля:


Репутация: 0

Доброе время суток!
Есть вопрос: как создать виджет в окне у которого нет панели заголовка с именем окна, кнопками "свернуть" "развернуть" "закрыть".
Нужно ещё сделать так чтобы окно сразу было развёрнуто на весь экран
Заранее спасибо

Создай любой виджет, а в его конструкторе пропиши showFullScreen();
Если создашь виджет на основе QDialog, то будет еще фишка - закрытие окна по клавише ESC.


опции профиля:



Россия

Float window over source code

Float window over source code

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

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

Яндекс.Браузер умеет откреплять любое видео в виде плавающего окна, что очень удобно.

Создание проекта

Откроем Qtcreator и создадим проект Qt Widgets Application для декстопа.

Назовем его QtFloatWindow .

Класс окна оставим без изменений.

Пробный запуск

Сразу после создания, проект откроется в редакторе, нам нужно проверить собирается ли у нас проект в принципе.

Раскрываем папку с проектом и открываем файл mainwindow.cpp

Нажимаем Ctrl+R, будет запущена сборка проекта.


C:\msys64\mingw64\share\qt5\mkspecs\common\windows-vulkan.conf:1: error: Cannot find feature windows_vulkan_sdk

Её можно спокойно игнорировать, если, конечно, вы не используете Vulkan API для разработки под windows.


Если более серьезных ошибок не возникло и среда сборки у вас настроена верно, то появится такое вот окно:

Вот и всё, текст прошел успешно можно закрывать окно.

Добавление формы для плавающего окошка

Пришло время заняться непосредственно плавающим окном.

Добавим новую форму в проект. Для этого щелкаем правой кнопкой на название проекта и выбираем Add new…

В новом выбираем Qt и Qt Designer Form Class и жмем Choose…


На следующей форме выбираем Widget и жмем Next

Задаем имя новой формы в поле Class name : FloatWindow


Жмем Next и сразу Finish

Откроется наша, только что созданная, форма:

В свойствах формы в блоке geometry задаем новые размеры формы, пусть это будет:

Размеры окна, в редакторе, изменяться в соответствии с заданными размерами.

Тестирование новой формы

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

Добавим в начало файла:

В конец MainWindow::MainWindow(QWidget *parent) добавим:

У нас получится:

Запускаем проект Ctrl+R

Откроется наше большое окно, если вы его свернем, то под ним окажется наша новая форма:


Добавление компонентов на форму

Займемся внешним видом нашей формы, откроем её в редакторе и перетащим новый компонент Widget из области со списком компонентов.

Так же перетащим на Label на только что созданный Widget . Вы можете его перетащить и сбросить не только непосредственно на форму, но и на имя widget в списке компонентов формы.

В списке справа выбираем нашу форму – FloatWindow

Правой кнопкой вызываем меню и выбираем Lay Out -> Lay Out Horizontally .

В списке справа выбираем нашу форму – Widget

Правой кнопкой вызываем меню и выбираем Lay Out -> Lay Out Horizontally .

Выбираем widget и в поле objectName вводим новое значение для нее – centralwidget

Выбираем label и в поле objectName вводим новое значение для нее – clockLabel

Обратите внимание, так как мы использовали Layout , то изменять размер Label мы не можем.

В окне свойств пролистайте вниз до свойств QLabel

В поле Text вводим 00:00:00

В поле alignment для Horizontal выставляем AlignHCenter

Листаем вверх и выставляем размер шрифта равным 30

У нас получится следующее:


Теперь уберем ненужные отступы.

В списке справа выделяем FloatWindow и пролистываем свойства до самого низа – Layout

Меняем все значения равные 9 или 6 на 0 . Таким образом мы убираем ненужные отступы.

Повторяем тоже самое для centralwidget

Открываем floatwindow.cpp и добавляем код в FloatWindow::FloatWindow(QWidget *parent)

Запускаем, чтобы проверить что получилось – Ctrl-R.

Учим окно перемещаться по экрану

Давайте добавим код, позволяющий нам его перемещать по экрану.

Открываем floatwindow.cpp и добавляем в конец файла:

Нажимаем F4 и добавляем

Запускаем сборку Ctrl-R.

Вот и наше полупрозрачное окошко:


Просто щелкаем на нем левой кнопкой мыши и не отпуская перетаскиваем в нужное место на экране.

Заключение

Подведем итоги, мы узнали:

Вот и всё на сегодня. В следующем материале мы добавим контекстное меню для плавающего окна и заставим часы идти.

Читайте также: