gpt4 book ai didi

c++ - 右键单击 QListWidget 上的按钮

转载 作者:行者123 更新时间:2023-11-30 01:45:46 25 4
gpt4 key购买 nike

我有一个方法可以删除列表小部件上的文件列表:

void MainWindow::on_listWidget_clicked(const QModelIndex &index)
{
qDeleteAll(ui->listWidget->selectedItems());
}

但我想实现一个右键单击按钮,它提供了一个删除它的选项。我不确定如何继续。

最佳答案

需要继承QListWidget,捕捉鼠标点击事件

我的列表控件.h :

    #ifndef MYLISTWIDGET_H
#define MYLISTWIDGET_H

#include <QListWidget>

class MyListWidget : public QListWidget
{
Q_OBJECT
public:
MyListWidget(QWidget *parent = 0);
~MyListWidget();
private:
void mousePressEvent(QMouseEvent *event);
signals:
void rightClick(QPoint* pos);
};

#endif // MYLISTWIDGET_H

我的列表控件.cpp:

    #include "mylistwidget.h"

#include <QMouseEvent>

MyListWidget::MyListWidget(QWidget *parent) :
QListWidget(parent)
{

}

MyListWidget::~MyListWidget()
{

}

void MyListWidget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton){
emit rightClick(&event->pos());
} else {
QListWidget::mousePressEvent(event);
}
}

创建对象并连接到槽:

MyListWidget* listWidget = new MyListWidget(this);
connect(listWidget,SIGNAL(rightClick(QPoint*)),
this,SLOT(onRightClick(QPoint*)));

在插槽中的位置获取项目:

void onRightClick(QPoint *pos)
{
QListWidgetItem* item = listWidget->itemAt(pos);
}

随心所欲地处理元素 :)

关于c++ - 右键单击 QListWidget 上的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com