我需要制作出一个QT输入控件,用户能在其中正常输入
数字字符,但需要实现的效果为:
每输入4个字符后自动空一格,即每自个字符为一组
每输入10组字符后自动换下一行
每输入达到5行后自动空一段,继续输入另起一段,效果见截图:
打算用QTextEdit来实现,请教比较合适的实现方法,不限制最终用什么输入控件,
谢谢!
用QTextEdit实现了一下,应该能满足LZ的要求
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
int count_char;
int count_row;
int count_line;
public slots:
void ProcessText();
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
count_char = 0;
count_row = 0;
count_line = 0;
connect(ui->textEdit, SIGNAL(textChanged()), this, SLOT(ProcessText()));
}
void MainWindow::ProcessText()
{
if(++count_char == 4)
{
if(++count_row == 10)
{
if(++count_line == 5)
{
ui->textEdit->insertPlainText("\n");
count_line = 0;
}
ui->textEdit->insertPlainText("\n");
count_row = 0;
}
else
ui->textEdit->insertPlainText(" ");
count_char = 0;
}
}
MainWindow::~MainWindow()
{
delete ui;
}