门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
开放区(网友自由发帖区)
›
文章教程
›
Qt Creator快速入门第三版 P93,94,95页,完整源代码 ...
发布主题
返回列表
Qt Creator快速入门第三版 P93,94,95页,完整源代码
0
回复
6577
查看
[复制链接]
kingofzgjsxz
当前离线
积分
24
kingofzgjsxz
累计签到:9 天
连续签到:1 天
来源: 原创
2017-5-28 21:44:33
显示全部楼层
|
阅读模式
马上注册,查看详细内容!注册请先查看:
注册须知
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
介于书上提供的源代码的不完整性,在这里提供完整代码供大家参考
一定要记得先在.ui文件中建立一个TextEdit部件。
代码如下(参考论坛上提供的源代码)
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;
private slots:
void setText(const QString &string); //向编辑器中添加文本
};
#endif // MAINWINDOW_H
复制代码
myaction.h:
#ifndef MYACTION_H
#define MYACTION_H
#include <QWidgetAction>
class QLineEdit; //前置声明
class MyAction : public QWidgetAction
{
Q_OBJECT
public:
explicit MyAction(QObject *parent = 0);
protected:
QWidget* createWidget(QWidget *parent);
//声明函数,该函数是QWidgetAction类中的虚函数
signals:
void getText(const QString &string);
//新建信号,用于在按下回车键时,将行编辑器中的内容发射出去
private slots:
void sendText(); //新建槽,它用来与行编辑器的按下回车键信号关联
private:
QLineEdit *lineEdit; //定义行编辑器对象的指针
};
#endif // MYACTION_H
复制代码
main.cpp:
#include "mainwindow.h"
#include <QTextCodec>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
复制代码
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myaction.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 创建MyAction
MyAction *action = new MyAction;
QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)"));
// 添加菜单并且加入我们的action
editMenu->addAction(action);
// 将action的getText()信号和这里的setText()槽进行关联
connect(action,SIGNAL(getText(QString)),this,SLOT(setText(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
// 插入文本
void MainWindow::setText(const QString &string)
{
// 将获取的文本添加到编辑器中
ui->textEdit->setText(string);
}
复制代码
myaction.cpp:
#include <QLineEdit>
#include <QSplitter>
#include <QLabel>
#include "myaction.h"
MyAction::MyAction(QObject *parent) :
QWidgetAction(parent)
{
// 创建行编辑器
lineEdit = new QLineEdit;
// 将行编辑器的按下回车键信号与我们的发送文本槽关联
connect(lineEdit,SIGNAL(returnPressed()),this,SLOT(sendText()));
}
// 创建部件
QWidget * MyAction::createWidget(QWidget *parent)
{
// 这里使用inherits()函数判断父部件是否是菜单或者工具栏
// 如果是,则创建该父部件的子部件,并且返回子部件
// 如果不是,则直接返回0
if(parent->inherits("QMenu") || parent->inherits("QToolBar")){
QSplitter *splitter = new QSplitter(parent);
QLabel *label = new QLabel;
label->setText(tr("插入文本:"));
splitter->addWidget(label);
splitter->addWidget(lineEdit);
return splitter;
}
return 0;
}
// 发送文本
void MyAction::sendText()
{
// 发射信号,将行编辑器中的内容发射出去
emit getText(lineEdit->text());
// 清空行编辑器中的内容
lineEdit->clear();
}
复制代码
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了