QGraphicsScene显示一个按钮 C++
时间: 2024-03-01 09:52:59 浏览: 101
C++ 按钮控件
3星 · 编辑精心推荐
以下是一个类似的 C++ 示例代码:
```cpp
#include <QApplication>
#include <QGraphicsItem>
#include <QGraphicsScene>
#include <QGraphicsTextItem>
#include <QGraphicsRectItem>
#include <QGraphicsProxyWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
class Button : public QGraphicsItem {
public:
Button(const QString& text, QGraphicsItem* parent=nullptr)
: QGraphicsItem(parent)
{
m_text = new QGraphicsTextItem(text, this);
m_text->setDefaultTextColor(QColor(255, 255, 255));
QRectF rect = m_text->boundingRect();
m_rect = new QGraphicsRectItem(rect, this);
m_rect->setBrush(QColor(0, 0, 255));
}
QRectF boundingRect() const override {
return m_rect->rect();
}
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget=nullptr) override {
Q_UNUSED(painter);
Q_UNUSED(option);
Q_UNUSED(widget);
}
private:
QGraphicsTextItem* m_text;
QGraphicsRectItem* m_rect;
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
QGraphicsScene scene;
QPushButton button("Button");
QWidget widget;
QVBoxLayout layout(&widget);
layout.addWidget(&button);
QGraphicsProxyWidget* proxy = scene.addWidget(&widget);
proxy->setPos(50, 50);
Button* buttonItem = new Button("Button Item");
buttonItem->setPos(100, 100);
scene.addItem(buttonItem);
QGraphicsView view(&scene);
view.show();
return app.exec();
}
```
这个示例代码中,我们同样创建了一个名为 Button 的自定义 QGraphicsItem 类,它包含一个 QGraphicsTextItem 和一个 QGraphicsRectItem,用于显示按钮的文本和背景色。然后,我们将一个 QPushButton 添加到一个 QWidget 中,并将 QWidget 包装成 QGraphicsProxyWidget,然后将 QGraphicsProxyWidget 添加到 QGraphicsScene 中,实现了一个按钮的显示。最后,我们创建了一个 ButtonItem 实例,并将其添加到 QGraphicsScene 中,以显示自定义按钮。
阅读全文