一个QT中特殊输入控件的实现问题

我需要制作出一个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;
}

运行结果:
图片说明