Russian Qt Forum
Апрель 25, 2024, 07:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Неожиданный fullscreen (Win7)  (Прочитано 4842 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Сентябрь 14, 2014, 12:41 »

Добрый день

На запуске приложения выставляю QMainWindow в maximize и размеры ему тоже максимальные. Теперь если нажать бубочку restore - title вообще исчезает, менюшка в самом верху. Как вернуть шапку - хз. Если же сначала подвигать окно, то maximize/restore работает норм. Как избавиться от этой фичи(?)

Спасибо
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 14, 2014, 12:49 »

Можно хотя бы скрин? Потому что я лично не понимаю что за бубочка restore и как вы ему выставляете размеры, если уже сделали ему maximize.

Если вы выставляете размеры самостоятельно, то скорее всего проблема в том, что вы не учитываете "панель задач". Т.е. максимальная высота окна программы будет размер экрана - высота панели задач. Получить текущее положение панели задач просто не получится. Поэтому надо использовать showMaximized() и showMinimized().

PS панель задач - это панелька с треем и кнопкой "ПУСК"
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #2 : Сентябрь 14, 2014, 13:01 »

restore — восстановить исходный размер окна, между крестиком и сворачиванием
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Сентябрь 14, 2014, 13:02 »

Вверху - исходное, restore средняя кнопка. Внизу - после нажатия restore. Панель задач остается как была, но frame окна исчезает
Записан
Hrundel
Гость
« Ответ #4 : Сентябрь 14, 2014, 13:20 »

Может с флагами что-то не так?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Сентябрь 14, 2014, 13:49 »

Если вы выставляете размеры самостоятельно, то скорее всего проблема в том, что вы не учитываете "панель задач". Т.е. максимальная высота окна программы будет размер экрана - высота панели задач.
Я использую QScreen::availableGeometry

Может с флагами что-то не так?
Любое передвижение окна исправляет ситуацию и больше эффект не появляется
Записан
Bepec
Гость
« Ответ #6 : Сентябрь 14, 2014, 14:16 »

Код создания окна приведите.  И тогда уже бум смотреть.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Сентябрь 14, 2014, 15:10 »

Виноват, сам насвистел  Улыбающийся Было так
Код
C++ (Qt)
QRect R = QApplication::desktop()->availableGeometry();
mainWin->setGeometry(R);
Ну он мне frame и убирает за границы экрана. Правильно так
Код
C++ (Qt)
mainWin->move(R.left(), R.top());
mainWin->resize(R.width(), R.height());
 
Но без фрейма выглядело так натурально, ну я и подумал что фича  Улыбающийся
« Последнее редактирование: Сентябрь 14, 2014, 15:12 от Igors » Записан
Figaro
Гость
« Ответ #8 : Сентябрь 16, 2014, 08:20 »

Я делаю так:
1. Флаги создания:
Код:
Qt::Window | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint | Qt::CustomizeWindowHint
2. В конструкторе:
Код:
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
...
connect(QApplication::desktop(), SIGNAL(workAreaResized(int)), SLOT(setFullScreen(int)));
3. Далее:
Код:
void MainWindow::showEvent(QShowEvent *e)
{
QWidget::showEvent(e);
QSize size = sizeHint();
setFixedSize(size);
resize(size);
move(0, 0);
}

QSize MainWindow::sizeHint() const
{
QRect screenRect = QApplication::desktop()->availableGeometry(QApplication::desktop()->screenNumber(this));
QSize deltaSize = frameGeometry().size() - geometry().size();
return (screenRect.size() - deltaSize);
}

void MainWindow::setFullScreen(int screen)
{
if (screen == QApplication::desktop()->screenNumber(this)) {
QSize size = sizeHint();
setFixedSize(size);
resize(size);
}
}

Муторно, конечно, но работает Улыбающийся Qt4.8.5
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 22.