Этот код работает:
QRect r = QApplication::desktop()->availableGeometry();
QRect main_rect = this->geometry();
main_rect.moveTopRight(r.topRight());
this->move(main_rect.topLeft());
Этот код работает на позиции экрана .. Но я хочу выравнивать справа от экрана ..
Есть ли у вас какие-либо идеи ?
Спасибо..
Я думаю, что вы должны использовать setAlignment для вашего основного макета примерно так
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->setAlignment(Qt::AlignRight);
У меня есть решение, но, к сожалению, это не так просто …
Во-первых, вы должны сделать движение после небольшой задержки, вы можете прочитать больше об этом здесь (Проверьте принятые ответы)
И что вам нужно сделать, чтобы переместить окно:
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();
}
Я добавил картинку, чтобы визуализировать то, что я сделал выше. Я надеюсь, что смог вам помочь.
РЕДАКТИРОВАТЬ: Только что видел, что этот вопрос больше года … Возможно, это все еще полезно для кого-то …