简体   繁体   English

qt 右键单击时创建按钮

[英]qt create button when right click

I am new in qt I want to create a button when I right click我是 qt 的新手 我想在右键单击时创建一个按钮

There is my code:有我的代码:

void MainWindow::right_clicked(QMouseEvent *event)
{
    if(event->button() == Qt::RightButton)
        {
           QPushButton *item = new QPushButton();
           item->setIcon(QIcon(":/images/7928748-removebg-preview(1).ico"));
           item->setIconSize(QSize(32, 32));
           item->setGeometry(QRect(QPoint(event->x(), event->y()), QSize(32, 32)));
        }
}

But nothing appears但什么都没有出现

To capture any mouse event in a QWidget you must override the mousePressEvent method.要在QWidget中捕获任何鼠标事件,您必须重写mousePressEvent方法。

class MainWindow : public QMainWindow
{
    Q_OBJECT

protected:
    void mousePressEvent(QMouseEvent *event);
};

And in the mainwindow.cpp, implement it as follows:在mainwindow.cpp中,实现如下:

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::RightButton) {
        // make mainwindow parent of this button by passing "this" pointer
        QPushButton *item = new QPushButton(QIcon(":/images/close-button-icon"), "", this);

        // set button position to the location of mouse click
        item->setGeometry(QRect(QPoint(event->x()-16, event->y()-16), QSize(32, 32)));
        item->show();
    }
}

If you don't save the pointer to QPushButton, then you will not be able to use it afterwards.如果您不保存指向 QPushButton 的指针,那么您之后将无法使用它。

演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM