1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
**/
#include "popmenu.h"
#include <QString>
#include <QDebug>
#include <QFont>
#include <QApplication>
#include <QKeyEvent>
PopMenu::PopMenu()
{
QFont font;
font.setPixelSize(12);
this->setFont(font);
}
void PopMenu::setStringList(QStringList strings)
{
this->clear();
int i = -1;
for (QString str : strings) {
QAction* act = new QAction(str,this);
this->addAction(act);
i++;
connect(act, &QAction::triggered, this, [=](){
emit listAactive(i);
});
}
}
void PopMenu::showPopLists(QPoint pos)
{
this->adjustSize();
QSize size = this->size();
//弹出列表移动到鼠标上方
this->move(pos.x() - size.width() / 2 - 5, pos.y() - size.height() - 4);
this->show();
}
void PopMenu::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Escape) {
this->hide();
}
QMenu::keyPressEvent(event);
}
void PopMenu::hideEvent(QHideEvent *event)
{
qApp->removeEventFilter(this);
this->releaseKeyboard();
QMenu::hideEvent(event);
emit this->listHide();
}
|