主页 > 开源代码  > 

QT作业day4

QT作业day4

作业

代码

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 = ui->listWidget->row(item); ui->stackedWidget->setCurrentIndex(page); //跳转相应页面 }

效果

作业

思路

继承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) { menu = new QMenu(this); //创建menu QAction* del_action =menu->addAction("删除"); //创建action menu->triggered(del_action); //添加监视 //设定触发信号所连接的槽函数 QObject::connect(del_action,&QAction::triggered,this,&MyQListWidget::on_action_triggered); } void MyQListWidget::mousePressEvent(QMouseEvent *event) { //运行到此说明鼠标按下 //如果"鼠标右键"按下 if (event->button() == Qt::RightButton) { //判断"鼠标右键"位置是否有item if (itemAt(event->pos()) != nullptr) { qDebug() << "鼠标右键单击一次"; menu->exec(event->globalPos()); //显示 示例中QMouseEvent menu_open_flag=1; } } } void MyQListWidget::on_action_triggered() { qDebug() << "执行删除操作"; }

效果

右键点中item , 弹出menu

点中,执行删除操作

未被点中,无反应

标签:

QT作业day4由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“QT作业day4