龙初越 2016-03-11 03:43 采纳率: 66.7%
浏览 2413
已采纳

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

我需要制作出一个QT输入控件,用户能在其中正常输入
数字字符,但需要实现的效果为:
每输入4个字符后自动空一格,即每自个字符为一组
每输入10组字符后自动换下一行
每输入达到5行后自动空一段,继续输入另起一段,效果见截图:图片说明

打算用QTextEdit来实现,请教比较合适的实现方法,不限制最终用什么输入控件,
谢谢!

  • 写回答

1条回答

  • 小灸舞 2016-03-11 06:55
    关注

    用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;
    }
    

    运行结果:
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题