Программы на C++. Форум разработчиков
Anonymous
Qt Рисование прямоугольника в виджете
Сообщение
Anonymous » 24 ноя 2024, 20:26
Мне нужно нарисовать прямоугольник на виджете, который является дочерним элементом mainWindow. Но приведенный ниже код не удается отрисовать виджет, он рисуется на родительском экране.
mainwindow.cpp
Код: Выделить всё
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
void MainWindow::paintEvent (QPaintEvent *e)
{
QPainter *painter = new QPainter (ui->widget);
painter->begin (this);
painter->drawRect(e->rect());
painter->end ();
}
void MainWindow::mouseMoveEvent(QMouseEvent *event){
update((QRect(LastPoint,event->pos())));
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
LastPoint = event->pos();
}
}
MainWindow::~MainWindow()
{
delete ui;
}
mainwindow.hpp
Код: Выделить всё
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
void paintEvent (QPaintEvent *e);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
QPoint LastPoint;
~MainWindow();
private:
Ui::MainWindow *ui;
};
Скриншот дизайнера прикрепил.
Подробнее здесь:
https://stackoverflow.com/questions/337 ... -on-widget
1732469214
Anonymous
Мне нужно нарисовать прямоугольник на виджете, который является дочерним элементом mainWindow. Но приведенный ниже код не удается отрисовать виджет, он рисуется на родительском экране. [b]mainwindow.cpp[/b] [code]MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } void MainWindow::paintEvent (QPaintEvent *e) { QPainter *painter = new QPainter (ui->widget); painter->begin (this); painter->drawRect(e->rect()); painter->end (); } void MainWindow::mouseMoveEvent(QMouseEvent *event){ update((QRect(LastPoint,event->pos()))); } void MainWindow::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { LastPoint = event->pos(); } } MainWindow::~MainWindow() { delete ui; } [/code] [b]mainwindow.hpp[/b] [code]namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); void paintEvent (QPaintEvent *e); void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); QPoint LastPoint; ~MainWindow(); private: Ui::MainWindow *ui; }; [/code] Скриншот дизайнера прикрепил. [img]https://i.sstatic.net/JdFwG.png[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/33798802/qt-draw-rectangle-on-widget[/url]