我是 Qt 和 C++ 的初学者,我想看看如何在 Qt 中使用 QPainter 和事件,但由于执行过程中出现错误消息,我的原始代码被卡住了:
main.cpp
#include "customwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QScopedPointer<QWidget> widget(new customWidget());
widget->resize(240, 120);
widget->show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
和标题:
#ifndef CUSTOMWIDGET_H
#define CUSTOMWIDGET_H
#include <QWidget>
#include <QMouseEvent>
#include <QPoint>
#include <QPainter>
class customWidget : public QWidget
{
Q_OBJECT
public:
explicit customWidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
private:
QPoint m_mousePos;
QRect m_r2;
signals:
void needToRepaint();
public slots:
};
#endif // …Run Code Online (Sandbox Code Playgroud) 在 macOS 上调整大小时,我试图达到与 iTunes 的 miniPlayer 类似的效果。也就是说,检测窗口的大小调整何时完成,然后将高度更改为某个值。这是一个视觉示例:
问题是当窗口管理器完成调整大小(即用户释放句柄)时,QML 窗口中不存在通知我的信号。因此,如果我没有信号并在调整大小期间更改宽度或高度后立即应用我的高度更改,则只要用户没有释放手柄,窗口就会闪烁(发生双重调整大小)。
感谢您的任何输入或帮助!