Qt - 登录对话框
我想通过继承QDialog来创建登录对话框。 我把子命名一个LoginDialog 2个QLineEdits:Qt - 登录对话框
- 进行登录
- 密码。
我希望能够警告用户一条消息,如果大写锁定为ON,而他将开始填写passwordLineEdit。假设我有一个告诉CapsLock按钮当前状态的函数。所以我想在LoginDialog类中做eventFiltering以便了解用户开始填写密码字段(即用户刚进入密码字段)
所以为此我在LoginDialog类的构造函数中写了如下内容:
m_passwordLineEdit->installEventFilter(this);
所以唯一要做的就是实现一个可以理解用户将填写密码的函数。
bool LoginDialog::eventFilter(QObject *target, QEvent *event)
{
if (target == m_passwordLineEdit)
{
}
return QDialog::eventFilter(target, event);
}
我的问题是:好像是应该用下面的函数(?)来完成如何实现这个功能???
定义了一类新
class LoginPassword : public QLineEdit
{
void eventFilter(QObject *object, QEvent *event)
}
bool LoginPassword:eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent::KeyPress)
{
// Insert your logic here
}
}
}
在对keyPressed事件 这样eventfilter功能检查,你会当用户开始输入密码
不显示弹出能够赶上的情况。这不好。 只是显示一个工具提示类型的东西像在Windows XP 或在登录对话框的底部显示一条状态消息
当用户开始键入时弹出消息不是一个很好的可用性风格;相反,我会这样做,就像在Windows 7登录屏幕中完成的一样,只要按下CAPSLOCK键,只在密码编辑字段旁边显示警告图标和消息。请记住,您还应该检查CAPSLOCK键的初始状态。
如果你使用Win32,你可以使用下面的代码,以确定是否CAPSLOCK键被按下:(::GetKeyState(VK_CAPITAL) & 0x1)
你可以用它来获取键盘功能键的状态(从文档什么说我的天堂没有经过测试),但它应该做到这一点。 keyboardModifiers是静态函数,所以你可以把它当行编辑文本改变这样的:
connect(lineEdit , SIGNAL(textChanged()), this, SLOT(checkCapsLock));
和checkCapsLock看看它压我不知道,如果它的最好的方式,但它应该工作。
在那个文档中,我不能看到CapsLock作为键盘修改器 – 2010-06-10 12:47:23
在qt论坛上的帖子,平台依赖于如何做到这一点的例子http://www.qtforum.org/article/32572/how-to-determine-如果-大写锁 - 是 - 上跨平台。HTML我想在qt中没有内置的方式来获得初始状态(或者我还没有找到它:D)你可以通过GetKeyState(VK_CAPITAL) – Olorin 2010-06-10 13:24:24
获得窗口对不起,我没有注意到capslock不是作为一个键盘修饰符呈现怪异的,但看到我以前的解决方案的评论 – Olorin 2010-06-10 19:51:19
我找不到一个简单的例子如何应用工具提示(和显示消息)到QLineEdit。有人可以帮助我吗? – Narek 2010-06-10 13:19:51