Как выровнять главное окно справа от экрана в Qt 5.1.0

Этот код работает:

QRect r = QApplication::desktop()->availableGeometry();
QRect main_rect = this->geometry();
main_rect.moveTopRight(r.topRight());
this->move(main_rect.topLeft());

Этот код работает на позиции экрана .. Но я хочу выравнивать справа от экрана ..

Есть ли у вас какие-либо идеи ?

Спасибо..

1

Решение

Я думаю, что вы должны использовать setAlignment для вашего основного макета примерно так

QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->setAlignment(Qt::AlignRight);
0

Другие решения

У меня есть решение, но, к сожалению, это не так просто …

Во-первых, вы должны сделать движение после небольшой задержки, вы можете прочитать больше об этом здесь (Проверьте принятые ответы)

И что вам нужно сделать, чтобы переместить окно:

void MainWindow::timerEvent(QTimerEvent *event)
{

if(event->timerId() == this->TimerID)
{
event->accept();
this->killTimer(this->TimerID);
//Used to kill the timer that was created in the constructor, needs the ID to do this

QRect desktopGeom = QApplication::desktop()->availableGeometry(); //Screen size
QRect windowFrame = this->frameGeometry(); //Window with frame
QRect windowSize = this->geometry(); //Window without frame

int smallFrameFactor = (windowFrame.width() - windowSize.width()) / 2; //Because the left, right and bottom border have the same size
int wideFrameFactor = windowFrame.height() - (windowSize.height() + smallFrameFactor); //The big, upper border

int x_pos = desktopGeom.x() + desktopGeom.width() - windowSize.width() - smallFrameFactor;
int y_pos = desktopGeom.y() + wideFrameFactor;

this->setGeometry(x_pos, y_pos, windowSize.width(), windowSize.height());
}
else
event->ignore();
}

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

РЕДАКТИРОВАТЬ: Только что видел, что этот вопрос больше года … Возможно, это все еще полезно для кого-то …

Пример изображения

0

По вопросам рекламы [email protected]