头文件
#ifndef SHORTCUTSETTINGDLG_H
#define SHORTCUTSETTINGDLG_H
#include <QWidget>
#include <set>
class QSingleShortcut;
class QShortcutSettingDlg : public QDialog
{
Q_OBJECT
public:
QShortcutSettingDlg(QWidget *parent);
~QShortcutSettingDlg();
//描述,以及对应的快捷键指针.
void init(QStringList& list,vector<QShortcut*> &p);
public slots:
void slotFinish();
void slotCancel();
void slotEnable(int);
void slotKeyWasSet(const QString&hotKey);
public:
bool isenable(){return m_bEnableAll;};
void setEnable(bool b){m_pBoxCheck->setChecked(!b);};
private:
// vector<QString> m_strDescription;
vector<QShortcut*> *m_pShortcut;
vector<QSingleShortcut*> m_vecpItem;//快键键设置控件
QPushButton *m_pBtnOK;//确认按钮
QPushButton *m_pBtnCancel;//取消按钮
QCheckBox *m_pBoxCheck;//单选框
bool m_bEnableAll;//单选框对应的标识
bool m_bModfied;
};
/*------------------------------------------------------
------------------------------------------------------*/
class QSingleShortcut : public QWidget
{
Q_OBJECT
public:
QSingleShortcut(QWidget *parent,QString,QShortcut*);
~QSingleShortcut();
const QString& text(){return m_strkey;};
void reset(){m_pLineEdit->setText(m_strkey);};
signals:
void signalNewShortcut(const QString&);//用于防止重复.
protected:
bool eventFilter(QObject *obj, QEvent *ev);
private:
QString m_strkey;//保存界面上已经设置好的快捷键.
QString m_newkey;//临时的快捷键,当条件具备时,更新保存的
QShortcut *m_pShortcut;
QLabel *m_pLabel;
QLineEdit *m_pLineEdit;
};
#endif // SHORTCUTSETTINGDLG_H
源文件
#include "StdAfx.h"
#include "ShortcutSettingDlg.h"
const int DEFALUTWIDTH=250;//默认宽度
const int DEFALUTHEIGHT=20;//默认高度
const int DEFALUTWSPACE=25; //默认间隔
const int DEFALUTHSPACE=5; //默认间隔
QShortcutSettingDlg::QShortcutSettingDlg(QWidget *parent)
: QDialog(parent),
m_bEnableAll(true),
m_bModfied(false),
m_pShortcut(0)
{
setWindowFlags(Qt::WindowSystemMenuHint|Qt::Window);
setWind