![]() |
|
![]() ![]() ![]() |
|
Mattias |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.3.2009 Репутация: нет Всего: нет |
Проблема заключается в следующем. Я создаю окно
Tetris w; w.setWindowTitle(QObject::tr("Tetris")); w.setFixedSize(MainWndWidth+2, MainWndHeight+2); w.show(); Где Tetris наследуется от QMainWindow. static const int MainWndWidth = 300; static const int MainWndHeight = 400; В конструкторе создаю сцену и представление scene = new QGraphicsScene(0, 0, MainWndWidth, MainWndHeight); scene->setBackgroundBrush(QBrush(Qt::black)); scene->setItemIndexMethod(QGraphicsScene::NoIndex); scene->setSceneRect(0, 0, MainWndWidth, MainWndHeight); view = new QGraphicsView; view->setScene(scene); view->setRenderHints(QPainter::Antialiasing); view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setCentralWidget(view); После этого пытаюсь рисовать объекты. При этом координата (0, 0) соответствует левому верхнему углу окна, но точка с координатами (MainWndWidth, MainWndHeight) вылезает за пределы окна. При этом по осям x и y у меня разная шкала. Сдвиг по x ровно в два раза меньше чем по у. Можно ли как-то совместить координаты, чтобы при изменении значений ширины и высоты окна мне не приходилось менять алгоритм перерисовки? Это сообщение отредактировал(а) Mattias - 13.3.2009, 17:24 |
|||
|
||||
pan2004 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 6 Всего: 9 |
А эти числа откуда взяты? Видать действительно размеры клиентской области окна меньше, чем указанно в этих переменных. Есть функции, которые вернут действительный размер. Убери их, вместо них пиши width() или height(). в смысле? |
|||
|
||||
Mattias |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.3.2009 Репутация: нет Всего: нет |
с width() и height() тоже самое.
В смысле что если я пишу вот так: qreal newx= CurrentRect->x() + Scale; qreal newy = CurrentRect->y() + Scale; CurrentRect->setPos(newx, newy); визуальное смещение по x будет ровно в два раза меньше чем по y. Я полагаю что, здесь играет роль различие в координатах сцены и координатах элемента, но как их совместить не знаю. Это сообщение отредактировал(а) Mattias - 13.3.2009, 17:45 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |