76.QT槽的机制
- 按钮点击获取文本框输入
void Dialog::on_pushButton_clicked()
{
//获取文本输入
QString vstr = ui->lineEdit->text(); //判断是否转换成功
bool isok;
//转换
int value = vstr.toInt(&isok);
double area = value*value*PI;
QString tempstr;
ui->lineEdit_2->setText(tempstr.setNum(area));
} - 文本框内容改变执行的操作
void Dialog::on_lineEdit_textChanged(const QString &arg1)
{
this->on_pushButton_clicked();
}
手动实现QT的界面
- dialog.h添加按钮,文本框,标签等头文件
#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel> - 在dialog.h类中添加按钮,文本框,标签的指针,并添加按钮的触发函数
private:
Ui::Dialog *ui;
//图形控件
QLabel *label1,*label2;
QLineEdit *edit1,*edit2;
QPushButton *button; //触发机制
private slots:
void showit(); - 在dialog.cpp中初始化,并创建布局
- 创建布局头文件
#include "QGridLayout"//布局
- 初始化
//加上this显示在当前窗口
button = new QPushButton(this);
button->setText(tr("计算"));
//button->show();
button->resize(,); edit1 = new QLineEdit(this); edit2 = new QLineEdit(this); label1 = new QLabel(this); label1->setText("输入半径:"); label2 = new QLabel(this); label2->setText("输出面积:"); - 创建布局
//网格布局
QGridLayout *mylayout = new QGridLayout(this);
mylayout->addWidget(label1,,);
mylayout->addWidget(label2,,);
mylayout->addWidget(edit1,,);
mylayout->addWidget(edit2,,);
mylayout->addWidget(button,,); - 关联按钮的函数或者文本框变化的函数
//clicked触发 关联
connect(button,SIGNAL(clicked(bool)),this,SLOT(showit()));
connect(edit1,SIGNAL(textChanged(QString)),this,SLOT(showit())); - 按钮点击函数实现
void Dialog::showit()
{
//获取文本输入
QString vstr = edit1->text(); //判断是否转换成功
bool isok;
//转换
int value = vstr.toInt(&isok);
double area = value*value*PI;
QString tempstr;
edit2->setText(tempstr.setNum(area));
}
完整代码:
- dialog.h
#ifndef DIALOG_H
#define DIALOG_H #include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel> namespace Ui {
class Dialog;
} class Dialog : public QDialog
{
Q_OBJECT public:
explicit Dialog(QWidget *parent = );
~Dialog(); private:
Ui::Dialog *ui;
//图形控件
QLabel *label1,*label2;
QLineEdit *edit1,*edit2;
QPushButton *button; //触发机制
private slots:
void showit();
}; #endif // DIALOG_H - dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include "QGridLayout"//布局
#define PI 3.14159 Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
//加上this显示在当前窗口
button = new QPushButton(this);
button->setText(tr("计算"));
//button->show();
button->resize(,); edit1 = new QLineEdit(this); edit2 = new QLineEdit(this); label1 = new QLabel(this); label1->setText("输入半径:"); label2 = new QLabel(this); label2->setText("输出面积:"); //网格布局
QGridLayout *mylayout = new QGridLayout(this);
mylayout->addWidget(label1,,);
mylayout->addWidget(label2,,);
mylayout->addWidget(edit1,,);
mylayout->addWidget(edit2,,);
mylayout->addWidget(button,,); //clicked触发 关联
connect(button,SIGNAL(clicked(bool)),this,SLOT(showit()));
connect(edit1,SIGNAL(textChanged(QString)),this,SLOT(showit()));
ui->setupUi(this);
} Dialog::~Dialog()
{
delete ui;
} void Dialog::showit()
{
//获取文本输入
QString vstr = edit1->text(); //判断是否转换成功
bool isok;
//转换
int value = vstr.toInt(&isok);
double area = value*value*PI;
QString tempstr;
edit2->setText(tempstr.setNum(area));
} - main.cpp
#include "dialog.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show(); return a.exec();
}
76.QT槽的机制的更多相关文章
- qt信号signal和槽slot机制
内容: 一.概述 二.信号 三.槽 四.信号与槽的关联 五.元对象工具 六.程序样例 七.应注意的问题 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工 ...
- 第七章 探秘Qt的核心机制-信号与槽
第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...
- Qt 内存管理机制(转)
许转载http://devbean.blog.51cto.com/448512/526734 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息.也就是说,强类型语言在分配对象内存空间时,总 ...
- 剖析Qt的事件机制原理
版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMai ...
- Qt 内存管理机制
这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里.现在有 Flex 4 的一篇和 <从 C++ 到 Objective-C>系列,感谢大家 ...
- Qt之事件处理机制
思维导读 一.事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下 ...
- 回调函数实现类似QT中信号机制(最简单)
1. 定义回调接口类: class UIcallBack{public: virtual void onAppActivated() = 0; virtual void onShowMore() = ...
- 深入Qt 学习 -- 反射机制(比较简单清楚)
相对于Java天生的这一特性, C++并不具备;但进入到Qt领域,这一切都变得简单自如了. 从Qt的元对象系统可知,除了提供信号/槽机制的特性之外,它还提供了以下特性: ■ QObject::meta ...
- 回调函数实现类似QT中信号机制
1. 定义回调接口类: class UIcallBack { public: virtual void onAppActivated() = 0; virtual void onShowMore() ...
随机推荐
- Windows 绝赞应用(该网站收集了日常好用的工具和软件)
在我们的电脑使用过程中,或多或少的被流氓软件恶心过.流氓软件之所以这么流氓全是靠他那恐怖的用户数量,基本上形成垄断后,各种流氓行为就一点点体现出来了. 我们也可以选择不用,但对流氓软件来说多你一个不多 ...
- 程序Yuan,eclipse你,会用吗?
程序Yuan,用eclipse敲代码时还在使用alt+/吗,还在为格式化代码ctrl+shift+f快捷键不快捷发愁吗? 如果是,那么这篇就适合你,请继续往下看. ①设置代码提示快捷键 ...
- c# 静态成员和实例成员的区别
静态成员也称为共享成员,例如静态属性 静态字段 静态方法:静态成员可以在类的实例之间共享. 静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化: 在非静态类中 即可以有静态成员 也可以有 ...
- GoldenGate 反向切换步骤
1 事先配置好反向复制链路: 2 停止源端的应用程序; 3 确认源端Capture已捕获所有的Redo信息: GGSCI>info all GGSCI>info ext_app 4 确认源 ...
- 在ubuntu上编译rasbian kernel(for raspberry pi 1)
raspberry pi官网的编译手册写的简洁有力,照着操作即可 https://www.raspberrypi.org/documentation/linux/kernel/building.md ...
- C++输入流
输出流基本概念 输出流定义在头文件中.大部分程序都会包含头文件,这个头文件又包含了输入流和输出流头文件.头文件还声明了标准控制台输出流cout. 使用输出流的最简单的方法是使用<<运算 ...
- GenIcam标准(五)
2.8.10.Enumeration, EnumEntry Enumeration节点把一个名称(name)映射到一个索引值(index value),并实现Ienumeration接口.Enumer ...
- Oracle运行set autotrace on报错SP2-0618、SP2-0611
SQL> set autotrace on SP2-0618: 无法找到会话标识符.启用检查 PLUSTRACE 角色 SP2-0611: 启用 STATISTICS 报告时出错 原因: PLU ...
- js斐波那契数列求和
一.递归算法 function recurFib(n) { if (n < 2) { return n; } else { return recurFib(n-1) ...
- poj--2007--Scrambled Polygon(数学几何基础)
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000KB 64bit IO Format: %I64d & %I64u Su ...