QLineEdit, QSpinBox, QTextEdit

目的

主要是说明这三个小部件的使用, 以及一些关联, 并无什么特别深奥的知识点。当然洛,QSpinBox与QDoubleSpinBox, QTextEdit与QPlainTextEdit大同小异, 就顺便替代说了。
QLineEdit, QSpinBox, QTextEdit这三个小部件在Qt Designer 统一为Input Widgets, 说明它们共同点就是可输入的编辑框, 但是QLineEdit应用于那种行编辑器, 用在账号,密码等编辑输入。 QSpinBox用于integers数据可旋转反复编辑(输入数据类型可带前后缀suffix输入, ¥%等等)。QTextEdit可用于编辑显示富文本, 使得该功能支持编辑html。

QLineEdit

QLineEdit 小部件是一个单行文本编辑器
行编辑允许用户使用一系列有用的编辑功能来输入和编辑单行纯文本,包括撤消和重做、剪切和粘贴以及拖放. 我常用与用户账号, 密码等单行文本输入的编辑功能, 它支持输入掩码, 验证器, 支持输入最大文本数–(QTextEdit 没有相应接口只能自己控制), 密码明文等。

字符等数字限制输入
自定义搜索框
coding

m_pSearchLineEdit = new QLineEdit();
QPushButton *pSearchButton = new QPushButton(this);

pSearchButton->setCursor(Qt::PointingHandCursor);
pSearchButton->setFixedSize(22, 22);
pSearchButton->setToolTip(QStringLiteral("搜索"));
pSearchButton->setStyleSheet("QPushButton{border-image:url(:/images/icon_search_normal); background:transparent;} \
                                     QPushButton:hover{border-image:url(:/images/icon_search_hover)} \
                                     QPushButton:pressed{border-image:url(:/images/icon_search_press)}");

//防止文本框输入内容位于按钮之下
QMargins margins = m_pSearchLineEdit->textMargins();
m_pSearchLineEdit->setTextMargins(margins.left(), margins.top(), pSearchButton->width(), margins.bottom());
m_pSearchLineEdit->setPlaceholderText(QStringLiteral("请输入搜索内容"));

QHBoxLayout *pSearchLayout = new QHBoxLayout();
pSearchLayout->addStretch();
pSearchLayout->addWidget(pSearchButton);
pSearchLayout->setSpacing(0);
pSearchLayout->setContentsMargins(0, 0, 0, 0);
m_pSearchLineEdit->setLayout(pSearchLayout);

connect(pSearchButton, SIGNAL(clicked(bool)), this, SLOT(search()));

清空文本按钮

QSpinBox

QSpinBox 类提供了一个旋转框小部件。
QSpinBox 旨在处理整数和离散值集(例如,月份名称); 将 QDoubleSpinBox 用于浮点值。
可以通过lineEdit() 访问编辑框, QTextEdit可没有。用户可通过上下按钮调整数值,支持prefix() and suffix(), 通过validate(), textFromValue() and valueFromText()验证输入的字符, 并将其转化为我们要显示的格式内容。可以设置setRange()限制输入范围, 有一个注意点就是setValue是设置integers, 而不是字符串型

QTextEdit

QTextEdit用于编辑显示富文本小部件。
能够以html-style格式引入去支持富文本的编辑。可支持表格, 图片的显示。它不能通过输入控制文本数, 需要自己编辑实现。

connect(this, &TextEdit::textChanged, this, &TextEdit::onTextChanged);
void TextEdit::onTextChanged()
{
    QString textContent = toPlainText();
    int length = textContent.count();
    if(length > m_maxLength)
    {
        int position = textCursor().position();
        QTextCursor textCursor = this->textCursor();
        int move = length - m_maxLength;
        textContent.remove(position - move, length - move);
        setText(textContent);
        textCursor.setPosition(position - move);
        setTextCursor(textCursor);
    }
}

它继承自QAbstractScrollArea, 因此可调用相关滑动区域窗口设置,

setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);

同时也注意viewport 相关设置调用。

insertFromMimeData 可以将源指定的 MIME 数据对象的内容插入到当前光标位置的文本编辑中。 每当作为剪贴板粘贴操作的结果插入文本时,或者当文本编辑接受来自拖放操作的数据时,都会调用它。
我们重新实现此功能以启用对其他 MIME 类型的拖放支持, 或者过滤一些数据。

bool TextEdit::canInsertFromMimeData(const QMimeData *source) const
{
    if(source->hasImage()){
        return false;
    }
    return QTextEdit::canInsertFromMimeData(source);
}
//avoid styled text and image
void TextEdit::insertFromMimeData(const QMimeData *source)
{
    QTextCursor cursor = this->textCursor();
    if (source->hasImage()){
        cursor.insertText("");
        return;
    }else if(source->hasText()){
        cursor.insertText(source->text());
        return;
    }
    QTextEdit::insertFromMimeData(source);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!为了实现您在Qt中开发的软件开发日志窗口,保存、浏览、展示和概括开发节点信息,您可以考虑使用Qt的QSpinBox、QLineEditQTextEdit、QDateEdit、QLabel和QPushButton等控件来实现。下面是实现该功能的大致步骤: 1. 创建一个QWidget对象作为主窗口,并设置窗口的尺寸和标题。 2. 在主窗口中添加一个QLabel控件来显示开发节点的信息。 3. 在主窗口中添加一个QDateEdit控件,用于设置当前开发节点的日期。 4. 在主窗口中添加一个QTextEdit控件,用于输入开发节点的详细信息。 5. 在主窗口中添加一个QSpinBox控件,用于设置每个开发节点的进度百分比。 6. 在主窗口中添加一个QPushButton控件,用于保存当前开发节点的信息。 7. 设置QPushButton的槽函数,以将当前开发节点的信息保存到本地文件中。 8. 添加一个QComboBox控件,用于选择需要展示的开发节点。 9. 设置QComboBox的槽函数,以展示所选开发节点的详细信息。 10. 添加一个QTableWidget控件,用于在窗口中展示所有的开发节点信息。 11. 在QTableWidget中添加一个自定义的表头,并设置表格的行数和列数。 12. 为QTableWidget添加所有的开发节点信息,并在表格中展示出来。 13. 为每个开发节点设置一个颜色标识,用于区分不同的开发状态。 以上便是实现该功能的大致步骤,具体的实现细节还需要您根据自己的需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值