Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50571
  • 博文数量: 21
  • 博客积分: 970
  • 博客等级: 准尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 18:43
文章分类
文章存档

2010年(21)

我的朋友

分类:

2010-03-10 17:47:42

QLineEdit提供一个文字输入栏位,可以输入文字或数字,我们可以对输入作验证,或是设定为一般显示、密码显示等等,以下的程式是个简单的设定示范:
#include  #include  
#include #include
#include #include
#include #include
#include #include

int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
QApplication app(argc, argv); QApplication app(argc, argv);

QWidget *window = new QWidget; QWidget *window = new QWidget;
window->setWindowTitle("QLineEdit"); window->setWindowTitle("QLineEdit");

QLabel *nameLabel = new QLabel("Name"); QLabel *nameLabel = new QLabel("Name");
QLabel *pwdLabel = new QLabel("Password"); QLabel *pwdLabel = new QLabel("Password");
QLabel *luckyLabel = new QLabel("Lucky Number"); QLabel *luckyLabel = new QLabel("Lucky Number");

QLineEdit *nameLine = new QLineEdit; QLineEdit *nameLine = new QLineEdit;
QLineEdit *pwdLine = new QLineEdit; QLineEdit *pwdLine = new QLineEdit;
pwdLine->setEchoMode(QLineEdit::Password); pwdLine->setEchoMode(QLineEdit::Password);
QLineEdit *luckyLine = new QLineEdit; QLineEdit *luckyLine = new QLineEdit;
luckyLine->setValidator(new QIntValidator(luckyLine)); luckyLine->setValidator(new QIntValidator(luckyLine));

QGridLayout *layout = new QGridLayout; QGridLayout *layout = new QGridLayout;

layout->addWidget(nameLabel, 0, 0); layout->addWidget(nameLabel, 0, 0);
layout->addWidget(nameLine, 0, 1); layout->addWidget(nameLine, 0, 1);
layout->addWidget(pwdLabel, 1, 0); layout->addWidget(pwdLabel, 1, 0);
layout->addWidget(pwdLine, 1, 1); layout->addWidget(pwdLine, 1, 1);
layout->addWidget(luckyLabel, 2, 0); layout->addWidget(luckyLabel, 2, 0);
layout->addWidget(luckyLine, 2, 1); layout->addWidget(luckyLine, 2, 1);

window->setLayout(layout); window->setLayout(layout);
window->show(); window->show();

return app.exec(); return app.exec();
} }

setEchoMode() 可以設定輸入文字的顯示方式,有一般顯示 (QLineEdit::Normal)、密碼顯示( QLineEdit:: Password)與不回應文字輸入( QLineEdit:: NoEcho),密碼顯示會使用遮罩字元(像是*)來回應使用者的輸入。 setEchoMode() 可以设定输入文字的显示方式,有一般显示(QLineEdit::Normal)、密码显示( QLineEdit:: Password)与不回应文字输入( QLineEdit:: NoEcho),密码显示会使用遮罩字元(像是*)来回应使用者的输入。

setValidator()設定是否對欄位的輸入進行驗證,QIntValidator用於設定整數的驗證方式,也可以設定其它的驗證器,像是QDoubleValidator用於浮點數的驗證。 setValidator()设定是否对栏位的输入进行验证,QIntValidator用于设定整数的验证方式,也可以设定其它的验证器,像是QDoubleValidator用于浮点数的验证。

QLineEdit 還可以設定文字對齊方式,有置左對齊(Qt::AlignLeft)、置中對齊( Qt:: AlignCenter)與置右對齊( Qt:: AlignRight)等設定方式,也可以使用setReadOnly()設定QLineEdit的欄位是否可編輯。 QLineEdit 还可以设定文字对齐方式,有置左对齐(Qt::AlignLeft)、置中对齐( Qt:: AlignCenter)与置右对齐( Qt:: AlignRight)等设定方式,也可以使用setReadOnly ()设定QLineEdit的栏位是否可编辑。


1)当文本长度大于QLabel控件长度时,超过的文本部分不会显示出来。处理方法:

1、用QLineEdit代替原来的QLabel
2
、去掉QLineEditframe
setFrame ( false);
3
、用样式表设置QLineEdit背景透明
setStyleSheet("background-color:transparent");

纠正一下:上面这个效果好,但是有个问题,在QLineEdit上用右键菜单显示不正常
3
、用样式表设置QLineEdit背景透明
setStyleSheet("background-color:rgba(212,208,200,255);");
//
后面的颜色值是QWidget默认背景颜色值
2)实现一个普通状态下为QLabel(只有文字,没有输入框)点击后变成输入框。现在的实现是组合两个对象,普通情况下显示QLabel,接收clicked信号后显示QLineEdit。但这样的实现很丑陋...如果可以设置QLineEdit为透明背景就方便了。

QLineEdit{
    background:rgba(0,0,0,0%);
}


阅读(4639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~