qt怎么在QGraphicsView的底部滑动条位置添加按钮

img


需要在画出的位置上添加几个按钮,方便预览和调整。
我一开使用水平布局,将按键和下拉条水平,在显示但是位置不正确,是需要自己计算位置
还是有方法直接添加到底部

QPushButton *button1 = new QPushButton();
QHBoxLayout *hLayout = new QHBoxLayout(this);
 //QPoint point = this->horizontalScrollBar()->pos();
 hLayout->addWidget(button1);
hLayout->addWidget(this->horizontalScrollBar());
hLayout->setGeometry(this->horizontalScrollBar()->geometry());

试试这个?


// 创建QWidget用于放置按钮和滑动条
QWidget* widget = new QWidget(this);
QHBoxLayout* layout = new QHBoxLayout(widget);

// 创建按钮
QPushButton* button1 = new QPushButton("Button 1");
QPushButton* button2 = new QPushButton("Button 2");

// 将按钮添加到布局中
layout->addWidget(button1);
layout->addWidget(button2);

// 获取QGraphicsView的水平滑动条
QScrollBar* horizontalScrollBar = this->horizontalScrollBar();

// 设置QWidget的大小和位置与滑动条相同,使其显示在底部滑动条的位置
QRect rect = horizontalScrollBar->geometry();
widget->setGeometry(rect);

// 将QWidget设置为QGraphicsView的viewport,这样它就会显示在底部滑动条的位置
this->setViewport(widget);

QGraphicsLinearLayout试一下,可实现自动布局,参考文章
https://blog.csdn.net/hitzsf/article/details/114600939

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:QT代码添加水平和垂直分割线,且设置分割线的样式。 也许有你想要的答案,你可以看看
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以为您提供一个解决方案,您可以在QGraphicsView底部滑动条位置添加按钮。您可以通过自定义QGraphicsView的子类并重写resizeEvent()函数来实现。

    下面是具体的解决方案:

    1. 创建一个新的类,继承自QGraphicsView并重写resizeEvent()函数。
    class CustomGraphicsView : public QGraphicsView
    {
        Q_OBJECT
    
    protected:
        void resizeEvent(QResizeEvent *event) override
        {
            QGraphicsView::resizeEvent(event);
    
            QSize viewSize = viewport()->size();
    
            // 创建和定位按钮
            QPushButton *button1 = new QPushButton(viewport());
            button1->setText("Button 1");
            button1->move(viewSize.width() - button1->sizeHint().width(), viewSize.height() - button1->sizeHint().height());
    
            QPushButton *button2 = new QPushButton(viewport());
            button2->setText("Button 2");
            button2->move(viewSize.width() - button2->sizeHint().width() - button1->sizeHint().width() - 5, viewSize.height() - button2->sizeHint().height());
        }
    };
    
    1. 在您的主窗口中,创建一个CustomGraphicsView的实例,并将其设置为主窗口的centralWidget。
    CustomGraphicsView *graphicsView = new CustomGraphicsView(this);
    setCentralWidget(graphicsView);
    

    现在,当您调整QGraphicsView的大小时,按钮将一直位于底部滑动条位置。

    请注意,将按钮添加到QGraphicsView的底部滑动条位置只是一个示例,您可以根据您的需求自定义按钮的类型和位置。

    希望这可以帮助到您!如果您有任何其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

使用自定义widget,你自己继承qprocessbar然后对类进行布局添加qpushbutton就行