20 / 20 / 15
Регистрация: 22.01.2013
Сообщений: 76
1

Виджет не рисует поверх другого виджета

19.05.2014, 23:29. Показов 2223. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Столкнулся с проблемой, нужно вставить один виджет поверх другого(абсолютное позиционирование), в обоих виджетах нужно рисовать в qpainter'e, но по неизвестным мне причинам второй виджет не рисует.
Второй виджет:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "inception.h"
 
void inception::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.setBrush(QBrush(Qt::green));
    p.drawEllipse(50,50,20,20);
}
 
 
inception::inception(QWidget *parent) :
    QWidget(parent){
}
Первый виджет:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "testunit.h"
testUnit::testUnit(QWidget *parent) :
    QWidget(parent)
{
    inception *incObj = new inception(this);
    incObj->setGeometry(QRect(0, 0, 75, 23));
 
 
 
}
void testUnit::paintEvent(QPaintEvent *){
    QPainter p(this);
    p.setBrush(QBrush(Qt::black));
    p.drawRect(0,0,150,150);
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2014, 23:29
Ответы с готовыми решениями:

наложение виджета поверх другого
Подскажите как наложить виджет(например чекбокс) поверх другого виджета на экране? гуглил, гуглил,...

Размещение виджета поверх другого
Доброго времени суток. Имею форму с компоновкой Grid Layout. На ней размещен Graphics View....

Как добраться до виджета, который находится внутри другого виджета?
Есть QStackWidget, внутри которого на одной из страниц-виджетов находится QTabWidget....

Появление виджета поверх и по центру другого
Добрый день, помогите решить проблему новичку в программировании. Пытаюсь сделать самостоятельно...

7
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
19.05.2014, 23:48 2
Как вариант:
C++ (Qt)
1
2
incObj->resize(75, 32); // так как setGeometry задает позицию относительно родителя, а не абсолютную.
incObj->repaint();
0
20 / 20 / 15
Регистрация: 22.01.2013
Сообщений: 76
19.05.2014, 23:50  [ТС] 3
RazrFalcon, все равно не работает.

Добавлено через 1 минуту
интересно что сам виджет есть, просто не рисует.
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
20.05.2014, 00:17 4
А так:
C++ (Qt)
1
2
3
4
5
void inception::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.drawRect(rect(), Qt::red);
}
0
20 / 20 / 15
Регистрация: 22.01.2013
Сообщений: 76
20.05.2014, 00:28  [ТС] 5
RazrFalcon,
C++ (Qt)
1
p.drawRect(rect(), Qt::red);
ругается, нет такого прототипа

Добавлено через 3 минуты
если исправить
C++ (Qt)
1
inception *incObj = new inception(this);
на
C++ (Qt)
1
2
inception *incObj = new inception;
incObj->show();
соответственно появляется второе окно и на нем уже рисует, если эта информация как-то поможет...
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
20.05.2014, 00:29 6
C++ (Qt)
1
p.fillRect(rect(), Qt::red);
Добавлено через 53 секунды
Цитата Сообщение от TSed Посмотреть сообщение
если исправить
Это не правильный подход. Не ясно почему изначальный вариант не работает...
0
20 / 20 / 15
Регистрация: 22.01.2013
Сообщений: 76
20.05.2014, 00:30  [ТС] 7
Цитата Сообщение от RazrFalcon Посмотреть сообщение
p.fillRect(rect(), Qt::red);
нарисовало! Но почему же круг не рисует?
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
20.05.2014, 00:34 8
Лучший ответ Сообщение было отмечено TSed как решение

Решение

Цитата Сообщение от TSed Посмотреть сообщение
Но почему же круг не рисует?
Потому что вы рисуете его от 50х50 размерами 20х20, а сам виджет размером 75х23.
Вы банально за пределами виджета рисовали.
1
20.05.2014, 00:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2014, 00:34
Помогаю со студенческими работами здесь

Вызов одного виджета из другого виджета
добрый день, есть 2 формы, сделанные в дизайнере. По нажатию на кнопку из формы 1 хочу чтобы...

Рисует поверх
Компонент ShellListView Хочу выделить необходимые мне элементы. Код void __fastcall...

Рисование поверх виджета
Всем добрый день! У меня следующая проблема, которую я никак не могу решить: у меня есть виджет, на...

При создании виджета, дочернего к QGLWidget, дочерний виджет не отображается
#include "class.h" #include <QApplication> #include <windows.h> #include <GL/glut.h> int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru