Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: shulgaserj от Июня 02, 2011, 19:36



Название: Размер экрана?????
Отправлено: shulgaserj от Июня 02, 2011, 19:36
Здравствуйте!

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

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

QT v.4.7.2 MinGW.
 ???


Название: Re: Размер экрана?????
Отправлено: kambala от Июня 02, 2011, 19:39
QRect QDesktopWidget::screenGeometry() - полный экран, QRect QDesktopWidget::availableGeometry() - область без панели задач


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 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

Что напартачил?


Название: Re: Размер экрана?????
Отправлено: GreatSnake от Июня 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().


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 02, 2011, 21:05
Спасибо!

Помогло!

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

Что не так сделал?


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 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().


Название: Re: Размер экрана?????
Отправлено: GreatSnake от Июня 02, 2011, 21:14
Ну а чего не показываешь как выставляешь геометрию? Код давай.
И, кстати, зачем передаешь "скрины" в аргументах? Чем не устроили дефолтные значения?


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 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()
{

}


Название: Re: Размер экрана?????
Отправлено: GreatSnake от Июня 02, 2011, 21:20
попробуй так:
Код
C++ (Qt)
setGeometry( QApplication::desktop()->availableGeometry() );


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 02, 2011, 21:25
В отладчике следующее показывает:

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



Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 02, 2011, 21:28
попробуй так:
Код
C++ (Qt)
setGeometry( QApplication::desktop()->availableGeometry() );

Ого открылось окно ...... что даже стандартных,close, не видно не говоря оназвании проги!


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 03, 2011, 09:42
Подскажите плиз что больше вариантов нету по поводу окна на весь экран?

Или что подгонять под размер моника? ???


Название: Re: Размер экрана?????
Отправлено: Mysterious от Июня 03, 2011, 09:59
Окно на весь экран:
setWindowState(Qt::WindowMaximized);


Название: Re: Размер экрана?????
Отправлено: lit-uriy от Июня 03, 2011, 10:02
А так извращаться - это реальная необходимость?

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


Название: Re: Размер экрана?????
Отправлено: shulgaserj от Июня 03, 2011, 20:07
Огромное спасибо все, кто откликнулся!

Попробую QWidget::showMaximized() ;D