Russian Qt Forum
Июля 08, 2025, 03:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размер экрана?????  (Прочитано 20354 раз)
shulgaserj
Гость
« : Июня 02, 2011, 19:36 »

Здравствуйте!

Подскажите как в QT получить размер экрана программно?

Типа ширину х длину с учетом уже имеющихся на экране панели задач винды?

QT v.4.7.2 MinGW.
 Непонимающий
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июня 02, 2011, 19:39 »

QRect QDesktopWidget::screenGeometry() - полный экран, QRect QDesktopWidget::availableGeometry() - область без панели задач
Записан

Изучением 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
shulgaserj
Гость
« Ответ #2 : Июня 02, 2011, 20:35 »

Попробовал

    QScreenRect = QDesktopWidget::screenGeometry(QDesktopWidget::screenNumber(0));
    QScreenRect = QDesktopWidget::availableGeometry(1):

ошибка следующая
C:/Project/05-build-desktop/../05/mainwindow.cpp:9: ошибка: cannot call member function 'int QDesktopWidget::screenNumber(const QWidget*) const' without object
C:/Project/05-build-desktop/../05/mainwindow.cpp:10: ошибка: cannot call member function 'const QRect QDesktopWidget::availableGeometry(int) const' without object

Что напартачил?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июня 02, 2011, 20:50 »

QApplication::desktop()->screenGeometry(QDesktopWidget::screenNumber(0));
QApplication::desktop()->availableGeometry(1);

А вообще-то нужно читать, что выводит компилятор:
Цитировать
cannot call member function 'int QDesktopWidget::screenNumber(const QWidget*) const' without object
что в переводе на русский С++ означает, что класс QDesktopWidget не имеет статической функции screenNumber().
« Последнее редактирование: Июня 02, 2011, 20:54 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
shulgaserj
Гость
« Ответ #4 : Июня 02, 2011, 21:05 »

Спасибо!

Помогло!

Но проблема осталась! Создается основное окно, QWidget, нижняя граница окна все равно за панелью задачь.

Что не так сделал?
Записан
shulgaserj
Гость
« Ответ #5 : Июня 02, 2011, 21:12 »

QApplication::desktop()->screenGeometry(QDesktopWidget::screenNumber(0));
QApplication::desktop()->availableGeometry(1);

А вообще-то нужно читать, что выводит компилятор:
Цитировать
cannot call member function 'int QDesktopWidget::screenNumber(const QWidget*) const' without object
что в переводе на русский С++ означает, что класс QDesktopWidget не имеет статической функции screenNumber().

Сижу в хелпе прямо с кодом!
Там написано

const QRect QDesktopWidget::availableGeometry ( int screen = -1 ) const
Returns the available geometry of the screen with index screen. What is available will be subrect of screenGeometry() based on what the platform decides is available (for example excludes the dock and menu bar on Mac OS X, or the task bar on Windows). The default screen is used if screen is -1.
See also screenNumber() and screenGeometry().
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Июня 02, 2011, 21:14 »

Ну а чего не показываешь как выставляешь геометрию? Код давай.
И, кстати, зачем передаешь "скрины" в аргументах? Чем не устроили дефолтные значения?
« Последнее редактирование: Июня 02, 2011, 21:18 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
shulgaserj
Гость
« Ответ #7 : Июня 02, 2011, 21:18 »

Вот:

#include "mainwindow.h"
#include <QDesktopWidget>
#include <QRect>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
   QScreenRect = QApplication::desktop()->availableGeometry(1);
//        setMinimumSize(QScreenRect.width(),QScreenRect.height());
//        setMaximumSize (QScreenRect.width(),QScreenRect.height());

   resize (QScreenRect.width(),QScreenRect.height());
}

MainWindow::~MainWindow()
{

}
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Июня 02, 2011, 21:20 »

попробуй так:
Код
C++ (Qt)
setGeometry( QApplication::desktop()->availableGeometry() );
Записан

Qt 5.11/4.8.7 (X11/Win)
shulgaserj
Гость
« Ответ #9 : Июня 02, 2011, 21:25 »

В отладчике следующее показывает:

Наблюдаемые   
   QScreenRect   
      x1   0
      x2   1679->  выход за границы экрана
      y1   0
      y2   989 -> выход за границы экрана
 Непонимающий

Записан
shulgaserj
Гость
« Ответ #10 : Июня 02, 2011, 21:28 »

попробуй так:
Код
C++ (Qt)
setGeometry( QApplication::desktop()->availableGeometry() );

Ого открылось окно ...... что даже стандартных,close, не видно не говоря оназвании проги!
Записан
shulgaserj
Гость
« Ответ #11 : Июня 03, 2011, 09:42 »

Подскажите плиз что больше вариантов нету по поводу окна на весь экран?

Или что подгонять под размер моника? Непонимающий
Записан
Mysterious
Гость
« Ответ #12 : Июня 03, 2011, 09:59 »

Окно на весь экран:
setWindowState(Qt::WindowMaximized);
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #13 : Июня 03, 2011, 10:02 »

А так извращаться - это реальная необходимость?

Может достаточно QWidget::showMaximized()
Записан

Юра.
shulgaserj
Гость
« Ответ #14 : Июня 03, 2011, 20:07 »

Огромное спасибо все, кто откликнулся!

Попробую QWidget::showMaximized() Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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