qt 在frame上画图
时间: 2023-12-01 12:00:57 浏览: 197
在Qt中,我们可以使用QPainter类在QFrame上绘制图形。首先,我们需要重写QFrame类的paintEvent()函数,并在其中创建一个QPainter对象来执行绘图操作。
以下是一个简单的示例代码:
```cpp
#include <QtWidgets>
class CustomFrame : public QFrame
{
public:
CustomFrame(QWidget *parent = nullptr) : QFrame(parent) {}
protected:
void paintEvent(QPaintEvent *event) override
{
QFrame::paintEvent(event);
// 创建一个QPainter对象,并在当前Frame上绘图
QPainter painter(this);
// 设置画笔颜色
painter.setPen(Qt::red);
// 绘制一个矩形
painter.drawRect(QRect(QPoint(20, 20), QSize(100, 100)));
// 绘制一条直线
painter.drawLine(QPoint(150, 150), QPoint(250, 250));
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建一个MainWindow窗口
QMainWindow mainWindow;
// 创建一个自定义Frame
CustomFrame frame(&mainWindow);
frame.setFrameStyle(QFrame::Box);
// 将自定义Frame添加到MainWindow的中央区域
mainWindow.setCentralWidget(&frame);
mainWindow.show();
return app.exec();
}
```
在上述示例代码中,我们创建了一个自定义的QFrame派生类CustomFrame,并重写了其paintEvent()函数。在paintEvent()函数中,我们创建了一个QPainter对象painter,并设置了所需的画笔属性,然后通过调用绘制函数,如drawRect()和drawLine()来绘制矩形和直线。
最后,在main()函数中,我们创建了一个QMainWindow窗口,并将CustomFrame添加到其中,然后将其设置为窗口的中央部件,最后显示出来。
当运行这个示例程序时,CustomFrame上将绘制一个红色的矩形和一条直线。你可以根据需要在paintEvent()函数中添加更多的绘图操作。
阅读全文