精华内容
下载资源
问答
  • QT实现可编辑组合

    2019-11-04 22:01:16
    1.应用场景描述:在使用QComboBox对列表中的内容进行选择的同时能够修改item项(一般来说不应该出现这样的需求,既然使用QComboBox,那么就应该是对已设定好内容进行选择,实际应用中最好再重新设计功能模块)。...

    1.应用场景描述:在使用QComboBox对列表中的内容进行选择的同时能够修改item项(一般来说不应该出现这样的需求,既然使用QComboBox,那么就应该是对已设定好内容进行选择,实际应用中最好再重新设计功能模块)。

    2.实现:

    (1)首先在QTCreator中很容易能够发现QComboBox有一个属性editable,设置为true后发现QComboBox中的当前项变成了像lineEdit一样的可编辑状态,查阅API文档得知,QComboBox本身就提供了lineEdit方法来获取用来编辑item项的lineEdit,前提是设置editable属性为true。

    (2)知道了如何编辑item项,那么编辑之后如何将编辑内容保存到QComboBox中并替换原先的item项呢?实现逻辑很简单,将编辑内容插入到当前项之前,再把原先项删除就可以了,这样还可以保证替换之后项和之前的顺序一致。但是何时触发该逻辑呢?即判断用户输入完毕的条件是什么?自然而然想到,应该在QComboBox失去鼠标焦点的时候进行触发。但是查阅文档并没有发现提供失去鼠标焦点的信号,只有一个相似的editTextChanged信号,该信号在组合框中的lineEdit内容发生改变时触发,显然该信号并不适合。查阅资料得知,可通过重写QWidget的focusInEvent(focusOutEvent)方法来实现对组件获取鼠标焦点事件的捕获,但是这样还要再增加一个类比较麻烦。QWidget提供了eventFilter(QObject * watched,QEvent event)对注册了过滤器的组件的所有事件进行捕获,通过对事件进行判定我们就能够得到失去焦点事件。伪代码如下

    class obj
    {
        void function()
        {
           QComboBox comb;
           comb.installEventFilter(this);
        }
    
        bool eventFilter(QObject *obj,QEvent *event)
        {
            if(obj == ui.comb)    
            {
                if(event->type()==QEvent::FocusOut)
                {
                    //插入新item
                    //删除原先旧item
                }
    
            }
        }
    }

    (3)接下来还有最后一个小细节:插入item之后,旧item的索引是多少呢?答案是不变!不清楚QComboBox的内部实现机制,但是这个通过代码可以简单求证。最后插入新irem和删除旧item的代码看起来如下:(尽管看起来有些怪异)

    ui.comboBox.insertItem(ui.comboBox->currentIndex(),ui.comboBox->lineEdit()->text());
    ui.comboBox.removeItem(ui.comboBox->currentIndex());

     

    展开全文
  • 开源代码编辑器,使用Qt框架开发。 截屏 特征 搜索并替换 语法高亮 编辑捷径 颜色主题 代码模板 自动括号 自动缩进 要添加的功能 完全兼容VIM 自动完成 建造 要构建Lightpad,您需要一些库和工具。 按照您正在编译...
  • Scribe-Text-Editor:使用Qt框架开发的文本编辑器。 具有标准文件操作,语法突出显示,大括号自动完成和自动缩进的功能
  • 学生信息管理系统 Qt窗体程序 包括用户登录、学生信息展示、新增,编辑,删除功能 、根据学号、姓名进行查询。
  • 功能:在部件LineEdit上输入整数,经过槽函数处理(对该整数进行四则元算),输出新的整数。 操作: (1)在ui界面放置部件PushBotton(发送者)、部件TextLabel、部件LineEdit(文本输入框)。 (2)添加与信号...

    功能:在部件LineEdit上输入整数,经过槽函数处理(对该整数进行四则元算),输出新的整数。
    操作:
    1.在ui界面放置部件PushBotton(发送者)、部件TextLabel、部件LineEdit(文本输入框)。
    2.添加与信号相联系的槽,并保存。
    在这里插入图片描述
    在这里插入图片描述
    (3)在VS中生成解决方案,并且在创建的函数头文件.h中定义、声明槽函数。
    在这里插入图片描述
    (4)调用槽函数。
    在这里插入图片描述
    代码:

    QString b = ui.lineEdit->text();//提取控件lineEdit上的文本信息,赋值给b
    int x = b.toInt();将b转换成整型
    int y = x+100;
    b = QString::number(y)  //再将int类型的y转换成QString的b
    ui.label10->setText(b);
    

    (5)运行
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Qt里面有一个叫做QPlainTextEdit的东西可以实现文本编辑功能,类似于HTML里的textarea。废话不多说,我们开始写代码。 我们用QPlainTextEdit实现文本编辑功能 1.新建一个项目,名字就叫editor吧,取消创建界面...

    实例1我们做了一个查找框,这东西必须得配合文本才能发挥作用,所以我们再做一个很简单的文本编辑器。

    Qt里面有一个叫做QPlainTextEdit的东西可以实现文本编辑的功能,类似于HTML里的textarea。废话不多说,我们开始写代码。

     

    我们用QPlainTextEdit实现文本编辑功能

    1.新建一个项目,名字就叫editor吧,取消创建界面,类名默认,基类默认为MainWindow就可以了。

    2.修改mainwindow.h,给他一些类和变量的声明:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QtGui/QMainWindow>
    class QPlainTextEdit;
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        QPlainTextEdit *textArea;
    };
    
    #endif // MAINWINDOW_H

    修改mainwindow.cpp,把声明的组件加进去:

    #include "mainwindow.h"
    #include <QPlainTextEdit>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setWindowTitle(tr("MyEditor"));
    
        //类似于html里的textarea
        textArea = new QPlainTextEdit;
    
        //设为中央部件
        setCentralWidget(textArea);
    }
    
    
    
    MainWindow::~MainWindow()
    {
        
    }

    点击绿色播放按钮运行一下看看效果吧,我们可以在里面写文字了:

     

     

    加入一个工具条

    那如果要实现查找,还要有个东西触发才行呢,我们要在上面加一个工具来触发查找框弹出来。首先我们了解下MainWindow的布局:

    菜单-QMenu 工具箱-QToolBar,下面的例子我们省略了菜单,只加一个toolbar,toolbar要添加一个搜索的行为searchAction。

    修改mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QtGui/QMainWindow>
    
    class QPlainTextEdit;
    class QAction;//动作,比如打开,关闭。
    class QToolBar;//工具条
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        QPlainTextEdit *textArea;
        QToolBar *toolBar;
        QAction *searchAction;
    
    private slots:
    
    };
    
    #endif // MAINWINDOW_H

    修改mainwindow.cpp

    #include "mainwindow.h"
    
    #include <QPlainTextEdit>
    #include <QToolBar>
    #include <QAction>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setWindowTitle(tr("MyEditor"));
    
        //第二个参数this指明这个action是属于MainWindow的,不加的话会出错。
        searchAction = new QAction(tr("search"), this);
        toolBar = addToolBar(tr("&Edit"));
        toolBar->addAction(searchAction);
    
        //类似于html里的textarea
        textArea = new QPlainTextEdit;
    
        //设为中央部件
        setCentralWidget(textArea);
    }
    
    
    
    MainWindow::~MainWindow()
    {
        
    }

     运行看下,现在已经有一个search给我们来点了,之后我们再处理search的的点击触发查找框的弹出:

     

    下面就把实例1做好的那个FindDialog加进去,让他去查找编辑器里的内容。

    我们右键项目名-添加新文件-概要-文本文件-选择,名称:finddialog.h。重复上述步骤,再新增一个finddialog.cpp。我们再把之前写好的的那两个文件(finddialog.h,finddialog.cpp)覆盖过来。在Qt Creator里新增文件的目的是不用我们手动去修改editor.pro了,我们现在可以打开editor.pro文件看里面的配置多了关于finddialog的:)

    修改mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QtGui/QMainWindow>
    
    class QPlainTextEdit;
    class QAction;
    class QToolBar;
    class FindDialog;//潜质声明,因为下面要声明一个查找框的实例化
    
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        QPlainTextEdit *textArea;
        QToolBar *toolBar;
        QAction *searchAction;
        FindDialog *findDialog;//前置声明一个查找框的实例化
    
    
    private slots:
        void showFindDialog();//显示查找框
    };
    
    #endif // MAINWINDOW_H

    修改mainwindow.cpp,我们一个连接,把search的行为与触发搜索框显示的方法连接一下:

    #include "mainwindow.h"
    #include "finddialog.h"
    
    #include <QPlainTextEdit>
    #include <QToolBar>
    #include <QAction>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setWindowTitle(tr("MyEditor"));
    
        //第二个参数this指明这个action是属于MainWindow的,不加的话会出错。
        searchAction = new QAction(tr("search"), this);
        toolBar = addToolBar(tr("&Edit"));
        toolBar->addAction(searchAction);
    
        //类似于html里的textarea
        textArea = new QPlainTextEdit;
    
        //设为中央部件
        setCentralWidget(textArea);
    
        connect(searchAction, SIGNAL(triggered()), this, SLOT(showFindDialog()));
    }
    
    
    
    void MainWindow::showFindDialog(){
        findDialog = new FindDialog;
        findDialog->show();
    }
    
    
    MainWindow::~MainWindow()
    {
        
    }

    这时候我们点击运行-search,搜索框出来了,之前的中文翻译没效果了,是因为没把qm文件加过来,我们到最后再处理吧:

     

    接下来很重要的一步就是FindDialog要把search的内容发送给MainWindow,因为MainWindow是没办法直接操作FindDialog里的部件的,他们只能用相互的信号和槽进行沟通。

    首先我们要修改finddialog,当searchButton按下时,用一个槽连接,然后这个槽再发射一个信号,这个信号为mainwindow做准备。

    通俗点就是说一个信号不能直接触发另一个信号,中间加个槽就可以了。我们画个图可能更形象点:

    finddialog.h的slots多加一个定义:void emitSearchSignal();  这里就不把全部代码贴出了。

    finddialog.cpp:在构造函数里添加一个connect:

    connect(searchButton, SIGNAL(clicked()), this, SLOT(emitSearchSignal()));

     

    然后在外面定义这个槽,这个槽又发射一个信号:

    //发射一个搜索的信号,因为上边的connect第四个参数没法写成SIGNAL啊,死规定第四个必须是SLOT
    //看完了这个函数再去看看mainwindow.cpp里的一个connect,应该就明白了。
    void FindDialog::emitSearchSignal(){
        QString text = searchLineEdit->text();
        if(!text.isEmpty()){
            emit searchSignal(text);
        }
    }
    
    

     

    mainwindow.h添加一个slot:

    void searchText(const QString &text);
    

     

    mainwindow.cpp的显示搜索框里加一个connect:

    void MainWindow::showFindDialog(){
        findDialog = new FindDialog;
        connect(findDialog, SIGNAL(searchSignal(const QString &)), this, SLOT(searchText(const QString &)));
        findDialog->show();
    }
    
    
    void MainWindow::searchText(const QString &text){
        textArea->find(text, QTextDocument::FindBackward);
    }
    
    

    当我们搜索a的时候,文本框里的a已经有背景颜色了:

     

    那么简单的查找功能到此就已经实现了,我们把翻译按照之前的方法实现,并且在MainWindow的构造函数里用resize(800,600)重定义一下mainwindow的大小。下面是效果图:

    目前这个编辑器用起来还太鸡肋,之后我们再加一个打开文件,保存文件的功能吧。

    转载于:https://www.cnblogs.com/justlikeheaven/archive/2013/01/11/2856037.html

    展开全文
  • Designer中输入工具部件中的Combo Box组合框与其他可视化工具组合框功能相同,组合了按钮和弹出列表的功能,显示当前项并可以弹出可选择项的列表。组合框可以编辑,允许用户修改列表中的每个项。Combo Box组合框对应...
  • Qt Designer的小部件编辑模式...编辑界面直观直观,操作简单,但仍支持Qt强大的布局功能。 要创建和编辑新的形式,打开文件菜单,选择新建表单…或按Ctrl + N键。也可以通过从“文件”菜单中选择“打开表单… ”或按Ct
  • 专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一、概述 QLineEdit部件是一个单行文本编辑器,...QLineEdit提供了用于编辑的默认键,相关键及用途官网...
  • 自制Qt IP编辑控件

    千次阅读 2013-01-25 20:05:34
    Qt的控件中没有自带像MFC里可以编辑IP地址的控件,...捕获Backspace键:当前编辑框的内容删除完时,光标调到前一个编辑框(如果有的话); 捕获Left和Right键:当前编辑框的内容遍历完时,将光标移动到前一或后一个编
  • Qt强大的检索功能

    千次阅读 2018-07-18 12:34:28
    Qt强大的检索功能   1.查找相应的函数,变量,类等等 Ctrl+F在下方出现如下搜索 以上是局部搜索,即只能在当前文件进行搜索 如果要进行全局搜寻,点击右下角的Advanced,出现如下搜索,如果搜索到就会...
  • Qt的撤销/回撤框架是基于命令(Command)模式的实现,用于在应用程序中实现撤销/回撤功能。 命令模式基于这样一种思想:应用程序中的所有编辑都是通过创建命令对象的实例来完成的。命令对象将更改应用于文档并存储...
  • Qt Designer控件背景颜色及边框设置

    万次阅读 多人点赞 2014-05-10 20:18:54
    需求:在Qt Designer中,从工具栏拖一个Frame(框架)到MainWindow(主窗口),为了美观,想把Frame的边框调宽,颜色...解决:通过参考他人设计,发现在Frame控件的属性styleSheet中,可以进行样式编辑来实现所需功能
  • Qt的各部分功能

    千次阅读 2012-09-18 14:50:43
    接触Qt有挺长的时间了,可是一直没有...同时Qt又提供了众多的工具,比如编辑器、编译器、调试器,比如完整的帮助文档、UI设计的工具和翻译工具,甚至还有一些仿真器,真的是一个完整又漂亮高效的开发系统。 Qt Crea
  • KDAB状态机编辑器库是一个框架,可用于帮助开发功能齐全的状态机编辑图形用户界面和工具。 此类应用程序的输出采用元代码或QML,然后可以在较大的QtQtQuick项目中使用。 有关KDAB状态机编辑器库的完整描述,请...
  • 基于Qt5中widgets框架编写的简易多文档编辑器,包括文档的新建,加载,保存,打印等基础操作。文本字体以及颜色的设置,查找替换功能
  • QT绘制树状图,根据示例代码diagramscene修改,支持拖拽,编辑文字,修改背景颜色,字体大小和颜色,方框放大缩小,箭头连线等功能
  • MVC模型是经典的三层结构,将数据、视图和逻辑分离。QT中的Model/View框架,实现了这个模式。在QT中这个模式涉及到3个类,...Qt中有已经提供了很多功能完善的类,可以根据需要直接拿来使用,比如: Model类:QStri...
  • 按导师要求整了一个可编辑的显示框架。 VS2015使用Qt模块不予赘述,参考资料很多。新建工程建Qt工程即可,双击ui进行界面设计就完事儿了。 主界面如图一: 在groundBox中添加了两个GraphicsView,为了实现放大...
  • 相信通过这两个控件的中文名大家应该也知道这两个控件的功能是什么了,前者用来编辑文本,后者无法编辑,只用于显示。我们将通过完成以下程序来讲解这两个控件的用法: 左边为QTextEdit控件,右边为QTextBrowser...
  • 使用QTableView,经常会遇到复选,要实现一个好的复选,除了常规的功能外,还应注意以下几点: 三态:不选/半选/全选 自定义风格(样式) 下面我们介绍一下常见的实现方式: 编辑委托。 方式:利用委托...
  • Model/View(模型/视图)结构是 Qt 中界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图与原始数据之间的接口。 GUI 应用程序的一个很重要的功能是用户在界面上编辑...
  • 专栏:Python基础教程...Designer输入部件中,Date/Time Edit是个日期时间编辑框,对应类QDateTimeEdit,该类是从父类QAbstractSpinBox派生。 QDateTimeEdit具有如下功能: 可以设置最小日期和最大日期,请参考max...
  • 前言 日常开发一直是linux后台 + 控制系统软件开发,感觉每天的黑框甚是无聊啊,遥想界面开发,平时主要用C++,无他,只能QT了,上次...文件,编辑,查找 支持快捷键 待改善(实在太多了) 只是抱着用用的态度,学
  • 这种方法如同使用 Windows 的画图软件在绘图,绘制的图形是位图,这种方法适合于绘制复杂性不高的固定图形,不能实现图件的选择、编辑、拖放、修改等功能Qt为绘制复杂的可交互图形提供了 Graphics view 绘图架构...
  • QT实现文本编辑器(简易版)

    千次阅读 2020-10-16 19:42:31
    一、简介:这是一个简易版的文本编辑器,只能进行简单的文件读取与保存 二、实现功能: (1)打开指定路径的文件 (2)把文件的名字显示在标签上 (3)同时打开多个文件 (4)修改文件后可进行保存 三、思路...
  • 实现多文本编辑器,包括新键、打开、保存文件,多编辑框层叠、水平、垂直平铺,字体编辑,字号编辑,撤回重做等功能

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 177
精华内容 70
关键字:

qt编辑框功能