作业
代码
Widget.h
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
// 槽函数
void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
private:
Ui::Widget *ui;
};
#endif
Widget.cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
// 槽函数
void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
int page = 0;
if(item->text() == "one")
{
ui->stackedWidget->setCurrentIndex(0);
}
else if(item->text() == "two")
{
ui->stackedWidget->setCurrentIndex(1);
}
else if(item->text() == "three")
{
ui->stackedWidget->setCurrentIndex(2);
}
else if(item->text() == "four")
{
ui->stackedWidget->setCurrentIndex(3);
}
}
效果
作业
思路
继承listWidget,重写其“鼠标点击”事件,创建menu
代码
重载后的MylistWidget.h
class MyQListWidget : public QListWidget
{
Q_OBJECT
public:
MyQListWidget(QWidget* parent = nullptr);
virtual void mousePressEvent(QMouseEvent *event) override;
private:
QMenu* menu;
};
#endif
MylistWidget.cpp
MyQListWidget::MyQListWidget(QWidget *parent)
:QListWidget(parent)
{
}
void MyQListWidget::mousePressEvent(QMouseEvent *event)
{
// 如果 是鼠标右键
if (event->button() == Qt::RightButton)
{
// 获取右键时对应位置的item
QListWidgetItem *item = itemAt(event->pos());
// 如果item存在,则
if (item)
{
qDebug() << "鼠标右键单击一次";
menu = new QMenu(this); //创建
menu->addAction("删除"); //添加
menu->exec(event->globalPos()); //显示 示例中QMouseEvent
}
}
// // 如果鼠标按下的地方有 action
// QAction* action = menu->actionAt(event->globalPos());
// if(action != nullptr)
// {
// qDebug() << "执行删除操作" << action->text();
// }
}
效果(部分)