c++ - Qt 电子邮件输入小部件

标签 c++ qt

我想要像谷歌电子邮件或其他电子邮件服务一样的输入电子邮件小部件。 http://postimg.org/image/7pnb42gyj/

如果我输入 spase、要标记的先前文本或其他图标。 我如何使用标准 Qt 小部件执行此操作?

我尝试使用 QListWidget 来做到这一点,设置图标模式,并将最后一项设置为 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);

最佳答案

您可以使用 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);
    }
}

当输入简单的邮件时,这对我有用。您只需要更复杂的正则表达式验证器。

关于c++ - Qt 电子邮件输入小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204720/

相关文章:

c++ 可执行文件不能在 windows 7 中运行 - 64 位不兼容

c++ - GPKG 未被识别为受支持的文件格式

c++ - 将新项目添加到基于 QAbstractListModel 的模型时,QML View 不会更新

c++ - 在 C++ 中选择错误的文件时防止 boost xml 解析器崩溃

c++ - notify_all 导致段错误

c++变量的多重定义,即使有extern

c++ - 使用 C++/Qt 的上下文菜单

c++ - 在 Qt C++ 中的自定义项委托(delegate)上绘制文本时的性能问题

c++ - 当字节不可用时,QLocalServer 发出 readyRead

c++ - 升压程序选项中的互斥选项集