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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение центра экрана  (Прочитано 14109 раз)
ramin
Гость
« : Декабрь 03, 2009, 09:26 »

ЗДРАВСТВУЙТЕ.
Помогите как определить центр экрана.чтобы использовать ее в программе.мне нужно чтобы в моей программе все диалоговые окна которые я открываю появлялись в центре Экрана?Непонимающий
Записан
spectre71
Гость
« Ответ #1 : Декабрь 03, 2009, 09:36 »

ЗДРАВСТВУЙТЕ.
Помогите как определить центр экрана.чтобы использовать ее в программе.мне нужно чтобы в моей программе все диалоговые окна которые я открываю появлялись в центре Экрана?Непонимающий

QDesktopWidget
Записан
irv
Гость
« Ответ #2 : Декабрь 03, 2009, 10:18 »

ЗДРАВСТВУЙТЕ.
Помогите как определить центр экрана.чтобы использовать ее в программе.мне нужно чтобы в моей программе все диалоговые окна которые я открываю появлялись в центре Экрана?Непонимающий

Можно сделать так:
Код:
private slots:
void setupWidget();
А далее в процедуре инициализации виджета:

Код:
this->setupWidget();

И сама функция:

Код:
void test::setupWidget()
{
    QRect screenRect = Application::desktop()->screenGeometry(QApplication::desktop()->primaryScreen());
    QRect windowRect(0, 0, 400, 232); //параметры виджета
    if (screenRect.width() < 400)
        windowRect.setWidth(screenRect.width());
    if (screenRect.height() < 232)
        windowRect.setHeight(screenRect.height());
    windowRect.moveCenter(screenRect.center());
    this->setGeometry(windowRect);
    this->setMinimumSize(80, 60);
}

Записан
ramin
Гость
« Ответ #3 : Декабрь 03, 2009, 11:06 »

Я проверил только далог окна опять не открываються в центре!!!!
Записан
Павел_F.
Гость
« Ответ #4 : Декабрь 03, 2009, 11:35 »

Переопредели showEvent вот так:
Код:
void MyDialog::showEvent( QShowEvent* event)
{
int x,y;
x = QApplication::desktop()->screen( 0)->width()/2 - width()/2;
y = QApplication::desktop()->screen( 0)->height()/2 - height()/2;
move( x, y);
QDialog::showEvent( event);
}
Это окно у меня появляется в центре экрана, была такая необходимость.
« Последнее редактирование: Декабрь 03, 2009, 11:38 от Павел_F. » Записан
SASA
Гость
« Ответ #5 : Декабрь 03, 2009, 12:47 »

По-моему диалоги и так отрображаются в центре монитора с мышкой.
Записан
MoPDoBoPoT
Гость
« Ответ #6 : Декабрь 03, 2009, 13:23 »

Как расположить окно по центру экрана?
По-моему диалоги и так отрображаются в центре монитора с мышкой.
Это если парент не указан, иначе - относительно центра парента.
Записан
sendevent
Гость
« Ответ #7 : Декабрь 03, 2009, 13:25 »

1. модальные диалоги вроде действительно сами центрируются по паренту (наверное, зависит от WM);
2. не забываем, что рабочих столов может быть больше одного - как физически, так и виртуально.

Код:
/*static*/ const QRect OurApplication::getScreenSize( const QPoint& pnt/*=QPoint()*/ )
{
    if( pnt.isNull() )
    {
        return qApp->desktop()->availableGeometry(); //-- default system' screen
    }
    return qApp->desktop()->availableGeometry( pnt ); //--"current" (under cursor) screen
}

/*static*/ void OurApplication::makeWidgetCentered( QWidget *pWidget, QWidget *pBaseWidget/*=0*/ )
{
    if( !pWidget )
    {
        return;
    }

    QRect baseRect;
    if( !pBaseWidget )
    {
        baseRect = getScreenSize( QCursor::pos() );
    }
    else
    {
        baseRect = pBaseWidget->rect();
        baseRect.setTopLeft( pBaseWidget->mapToGlobal( baseRect.topLeft() ) );
        baseRect.setBottomRight( pBaseWidget->mapToGlobal( baseRect.bottomRight() ) );
    }
   
    QRect widgetGeometry = pWidget->geometry();
    widgetGeometry.moveCenter( baseRect.center() );
   
    pWidget->setGeometry( widgetGeometry );
}
Записан
NicK
Гость
« Ответ #8 : Декабрь 04, 2009, 11:48 »

Код:
void PlaceWndInTheDesktopCentre()
{
        QDesktopWidget *desktop = QApplication::desktop();

        int screenWidth, width;
        int screenHeight, height;
        int x, y;
        QSize windowSize;

        screenWidth = desktop->width(); // get width of screen
        screenHeight = desktop->height(); // get height of screen

        windowSize = size(); // size of our application window
        width = windowSize.width();
        height = windowSize.height();

        // little computations
        x = (screenWidth - width) / 2;
        y = (screenHeight - height) / 2;
        y -= 20;

        // move window to desired coordinates
        move ( x, y );
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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