龙初越 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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序