您当前的位置: 首页 >  编辑器

txwtech

暂无认证

  • 3浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT自定义菜单-行编辑框回车发送字符串信息到中心部件的文本编辑器

txwtech 发布时间:2022-08-31 21:36:05 ,浏览量:3

QT自定义菜单-行编辑框回车发送字符串信息到中心部件的文本编辑器

 

 创建widgets Application

拖入textEdit控件,窗口空白,右键-布局-》栅格布局

构造函数里面添加代码:

#ifndef MAINWINDOW5_2_H
#define MAINWINDOW5_2_H

#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow5_2; }
QT_END_NAMESPACE

class MainWindow5_2 : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow5_2(QWidget *parent = nullptr);
    ~MainWindow5_2();

private:
    Ui::MainWindow5_2 *ui;
private slots:
    void setText(const QString &string2);
};
#endif // MAINWINDOW5_2_H
#include "mainwindow5_2.h"
#include "ui_mainwindow5_2.h"
#include "my_action.h"
MainWindow5_2::MainWindow5_2(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow5_2)
{
    ui->setupUi(this);
    //构造函数里面添加菜单
    //添加菜单并加入My_Action
    My_Action *myAction = new My_Action;
    QMenu *edit_menu =ui->menubar->addMenu(tr("编辑(&E)"));
    edit_menu->addAction(myAction);
    //将myAction的getText()信号和这里的setText()槽进行关联
    connect(myAction,SIGNAL(getText(QString)),this,SLOT(setText(QString)));
}

MainWindow5_2::~MainWindow5_2()
{
    delete ui;
}

void MainWindow5_2::setText(const QString &string2)
{
    ui->textEdit->setText(string2);
}

创建类文件:

#ifndef MY_ACTION_H
#define MY_ACTION_H
#include 

#include 
class QLineEdit;

class My_Action : public QWidgetAction
{
    Q_OBJECT
public:
    explicit My_Action(QObject *parent=0);
protected:
    //声明函数,该函数是QWidgetAction类中的虚函数
    QWidget * createWidget(QWidget *parent);
signals:
    //新建信号,用于按下回车键后,将行编辑框中的内容发送出去
    void getText(const QString &string);
private slots:
    //新建槽,它用来与行编辑框的按下回车键信号进行关联,by txwtech
    void sendText();
private:
    //声明行编辑框对象的指针
    QLineEdit * line_edit;
};

#endif // MY_ACTION_H
#include "my_action.h"
#include 
#include //分裂器
#include 

My_Action::My_Action(QObject *parent):QWidgetAction(parent)
{
  //创建行编辑器
    line_edit = new QLineEdit;
    //将行编辑器的按下回车键信号与发送文本槽进行关联
    connect(line_edit,&QLineEdit::returnPressed,this,&My_Action::sendText);
}

QWidget *My_Action::createWidget(QWidget *parent)
{
    //这里使用inherits()函数判断父部件是否是菜单或者工具栏
    //如果是,则创建该父部件的子部件,并且返回子部件
    //如果不是,则直接返回0
    if(parent->inherits("QMenu")||parent->inherits("QToolBar"))
    {
      QSplitter * q_splitter=new QSplitter(parent);
      QLabel * q_label = new QLabel;
      q_label->setText(tr("插入文本:"));
      q_splitter->addWidget(q_label);
      q_splitter->addWidget(line_edit);//部件添加的分裂器
      return q_splitter;
    }
    return 0;
}

void My_Action::sendText()
{
    emit getText(line_edit->text());
    line_edit->clear();
}

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0433s