• 12300阅读
  • 6回复

【提问】请教一下QT中的QMULTILINEEDIT中TAP键禁用~~!! [复制链接]

上一主题 下一主题
离线girl2008
 
只看楼主 正序阅读 楼主  发表于: 2005-08-28
如题~~!!!文字
[ 此贴被XChinux在2005-08-29 08:26重新编辑 ]
离线giscn
只看该作者 6楼 发表于: 2005-08-30
另外,在event(QEvent*)里截取TAB也可以,然后移到一下tab位置处,这样到不了keyPress。
http://nzt.spaces.live.com
离线XChinux

只看该作者 5楼 发表于: 2005-08-30
嘿嘿,刚才我试验的,把TextEdit里的tab键屏蔽了之后,它自动就设为Taborder了,自动跳转到下一个部件了。

#include <QApplication>
#include <QTextEdit>
#include <QKeyEvent>
#include <QLineEdit>
#include <QMainWindow>
#include <QPushButton>
#include <QGridLayout>
class MyTextEdit:public QTextEdit
{
public:
     MyTextEdit(QWidget *parent = 0);
     ~MyTextEdit();
private:
     void keyPressEvent(QKeyEvent *event);
     void keyReleaseEvent(QKeyEvent *event);
};
MyTextEdit::MyTextEdit(QWidget *parent)
     :QTextEdit(parent)
{
}
MyTextEdit::~MyTextEdit()
{
}
void MyTextEdit::keyPressEvent(QKeyEvent *event)
{
     if (event->key() == Qt::Key_Tab)
     {
           event->ignore();
     }
     else
     {
           QTextEdit::keyPressEvent(event);
     }
}
void MyTextEdit::keyReleaseEvent(QKeyEvent *event)
{
     if (event->key() == Qt::Key_Tab)
     {
           event->ignore();
     }
     else
     {
           QTextEdit::keyReleaseEvent(event);
     }
}
class MyWidget: public QMainWindow
{
public:
     MyWidget(QWidget *parent = 0);
     ~MyWidget();
private:
     MyTextEdit *myTextEdit;
     QLineEdit *lineEdit;
     QPushButton *pushButton;
};
MyWidget::MyWidget(QWidget *parent)
     : QMainWindow(parent)
{
  resize(QSize(400, 300).expandedTo(minimumSizeHint()));
  pushButton = new QPushButton(this);
  pushButton->setGeometry(QRect(9, 268, 382, 23));
  lineEdit = new QLineEdit(this);
  lineEdit->setGeometry(QRect(9, 244, 382, 18));
  myTextEdit = new MyTextEdit(this);
  myTextEdit->setGeometry(QRect(9, 9, 382, 229));
}
MyWidget::~MyWidget()
{
}
int main(int argc, char **argv)
{
     QApplication app(argc, argv);
     MyWidget mywidget;
     mywidget.show();
     return app.exec();
}
[ 此贴被XChinux在2005-08-30 16:51重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线girl2008
只看该作者 4楼 发表于: 2005-08-30
我之前试过,tab是没有起作用,但是我现在想要它tab键后跳转到下一个控件,像lineedit一样,试过不行,我再去看看。。。。谢谢XChinux了~!!!
离线XChinux

只看该作者 3楼 发表于: 2005-08-29
基本原理就是:截取它的KeyPress事件,然后识别它的按键,如果是tab的话,就忽略。
源代码如下:

#include <QApplication>
#include <QTextEdit>
#include <QKeyEvent>
class MyTextEdit:public QTextEdit
{
public:
     MyTextEdit(QWidget *parent = 0);
     ~MyTextEdit();
private:
     void keyPressEvent(QKeyEvent *event);
     void keyReleaseEvent(QKeyEvent *event);
};
MyTextEdit::MyTextEdit(QWidget *parent)
     :QTextEdit(parent)
{
}
MyTextEdit::~MyTextEdit()
{
}
void MyTextEdit::keyPressEvent(QKeyEvent *event)
{
     if (event->key() == Qt::Key_Tab)
     {
           event->ignore();
     }
     else
     {
           QTextEdit::keyPressEvent(event);
     }
}
void MyTextEdit::keyReleaseEvent(QKeyEvent *event)
{
     if (event->key() == Qt::Key_Tab)
     {
           event->ignore();
     }
     else
     {
           QTextEdit::keyReleaseEvent(event);
     }
}
int main(int argc, char **argv)
{
     QApplication app(argc, argv);
     MyTextEdit textedit;
     textedit.resize(600, 400);
     textedit.show();
     return app.exec();
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线girl2008
只看该作者 2楼 发表于: 2005-08-29
我用的是qt-2.3.7的,后续的版本都是用的QTEXTEDIT,没有QTMULTILINEEDIT这个类了
离线XChinux

只看该作者 1楼 发表于: 2005-08-29
啊???我怎么没在Qt 4.0.1的Qt Assistant里找到QMultiLineEdit这个类?楼主所说的是Qt 3.x里面的?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个