我希望在Google电子邮件或其他电子邮件服务上输入电子邮件小部件。 http://postimg.org/image/7pnb42gyj/
如果我输入spase,以前的文本标签或其他图标。 我如何使用标准Qt小部件来完成这项工作?
我尝试使用QListWidget
,设置iconmode和最后一项QLineEdit
作为最后一个元素。如果我设置listmode,QLineEdit
显示,如果iconmode - 不。
我该怎么做?
qhbl = new QHBoxLayout();
qlw = new QListWidget();
qlw->setViewMode(QListWidget::IconMode);
qlw->setResizeMode(QListWidget::Adjust);
connect(qlw, SIGNAL(customContextMenuRequested(const QPoint &)),
SLOT(showContextMenuForWidget(const QPoint &)));
qlw->setContextMenuPolicy(Qt::CustomContextMenu);
addNewElement("test111111111");
addNewElement("test222222222");
addNewElement("test3333");
addNewElement("test4444");
QListWidgetItem* qlwiItem = new QListWidgetItem();
qle = new QLineEdit();
qle->setText("input");
connect(qle, SIGNAL(returnPressed()), this, SLOT(addNewElement()));
qle->setFixedWidth(100);
qle->setMinimumWidth(90);
qle->setMaximumWidth(110);
qlw->addItem(qlwiItem);
qlw->setItemWidget(qlwiItem, qle);
qhbl->addWidget(qlw);
ui->centralWidget->setLayout(qhbl);
答案 0 :(得分:0)
您可以使用QSyntaxHighlighter
。它看起来不像你的照片那么好,但工作得很好而且速度很快。
我解决问题的简单例子:
void myHiglLight::highlightBlock(const QString &text)
{
QTextCharFormat myClassFormat;
myClassFormat.setFontWeight(QFont::Bold);
myClassFormat.setForeground(Qt::darkMagenta);
myClassFormat.setBackground(Qt::green);
QString pattern = "\\b[a-z]+@[a-z]+\.[a-z][a-z]\\b";
QRegExp expression(pattern);
int index = text.indexOf(expression);
while (index >= 0) {
int length = expression.matchedLength();
setFormat(index, length, myClassFormat);
index = text.indexOf(expression, index + length);
}
}
输入简单邮件时,这对我有用。您只需要更复杂的正则表达式验证器。