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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGridLayout координаты и рисование  (Прочитано 4812 раз)
swbor
Гость
« : Февраль 26, 2017, 10:12 »

Добрый день!
Стоит задача все содержимое QGridLayout обвести в кружочек. Рисовать на самой форме умею. Но совершенно не могу понять как узнать координаты QGridLayout. Функция Geometry у Layout выдает нули по x и по y. Если пробую GridLayout->widget()->pos() вылезает ошибка SIGSEGV.
Помогите решить эту задачу.
Либо объясните как создать унаследоваться от QGridLayout так чтобы переопределить ее функцию рисования(тоже пробовал, не получилось)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #1 : Февраль 26, 2017, 11:52 »

можно взять координаты виджета в левой верхней и в правой нижней ячейке — соответствующие углы и будут координатами лэйаута
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Февраль 26, 2017, 12:36 »

можно взять координаты виджета в левой верхней и в правой нижней ячейке — соответствующие углы и будут координатами лэйаута

там ещё отступы от границ и пробелы необходимо учесть, если таковые имеются
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Февраль 26, 2017, 13:38 »

Код
C++ (Qt)
QRect QWidget::childrenRect() const
Записан

Qt 5.11/4.8.7 (X11/Win)
swbor
Гость
« Ответ #4 : Февраль 26, 2017, 15:18 »

можно взять координаты виджета в левой верхней и в правой нижней ячейке — соответствующие углы и будут координатами лэйаута
Пробовал GridLayout->itemAt(0)->geometry()->x() выдает ноль., хотя располагается это все посередине формы.
Код
C++ (Qt)
QRect QWidget::childrenRect() const
А где это применить? В QGridLayout нет такого.

Сорри если сильно туплю, но пока вообще не понятно как решить такую свиду тривиальную задачу. Очень буду рад подсказке в виде конкретного кода.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #5 : Февраль 27, 2017, 13:10 »

Код
C++ (Qt)
class TestQt : public QWidget
{
Q_OBJECT
 
public:
TestQt(QWidget *parent = 0);
~TestQt();
};
 
TestQt::TestQt(QWidget *parent)
: QWidget(parent)
{
QGridLayout* layout = new QGridLayout(this);
QPushButton* button1 = new QPushButton("1", this);
QPushButton* button2= new QPushButton("2", this);
QPushButton* button3 = new QPushButton("3", this);
QPushButton* button4 = new QPushButton("4", this);
layout->addWidget(button1, 0, 0);
layout->addWidget(button2, 0, 1);
layout->addWidget(button3, 1, 0);
layout->addWidget(button4, 1, 1);
 
const QRect rect = childrenRect();
 
qDebug() << rect;
}
 
TestQt::~TestQt()
{
 
}
 

В выводе получаем QRect(0,0 100x30). Вполне определенные координаты и размеры.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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