社区
Qt
帖子详情
QT开发
GANZHIABC
2011-08-04 11:51:11
各位大哥大姐求救 我学QT不久, 遇到一个问题全局变量的问题 请大哥大姐指点
万分感谢!
我在a.h中定义了一个类cla,在a.cpp中 赋了初值:
a.h :
class cla{
publilc:
static int num;
}
a.cpp:
int cla::num=0;
然后将num做为全局变量使用 ,但是为什么在b.cpp中修改了num的值 却 在c.cpp中体现不出来呢
这个问题要怎么解决?
...全文
165
21
打赏
收藏
QT开发
各位大哥大姐求救 我学QT不久, 遇到一个问题全局变量的问题 请大哥大姐指点 万分感谢! 我在a.h中定义了一个类cla,在a.cpp中 赋了初值: a.h : class cla{ publilc: static int num; } a.cpp: int cla::num=0; 然后将num做为全局变量使用 ,但是为什么在b.cpp中修改了num的值 却 在c.cpp中体现不出来呢 这个问题要怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 1 楼 dxms8 的回复:]
调用顺序正确吗
[/Quote]
恩 调用顺序没什么问题
dxms8
2011-08-04
打赏
举报
回复
调用顺序正确吗
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 18 楼 yiyaaixuexi 的回复:]
qDebug输出吧
qDebug()<<"what what: "<< 变量或者方法返回直;
[/Quote]
有值输出了 哎呀 太感谢啦 非常感谢!
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 18 楼 yiyaaixuexi 的回复:]
qDebug输出吧
qDebug()<<"what what: "<< 变量或者方法返回直;
[/Quote]
恩 我试试! 真是万分感谢呀!
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 17 楼 dxms8 的回复:]
....qtCreator最下面一行有4个标签的撒。。。打开那个application output就行,如果有printf会在那儿显示。
[/Quote]
哎呦 在那儿显示呀
但是我的程序仍然没有任何显示 估计程序有问题
念茜
2011-08-04
打赏
举报
回复
qDebug输出吧
qDebug()<<"what what: "<< 变量或者方法返回直;
dxms8
2011-08-04
打赏
举报
回复
....qtCreator最下面一行有4个标签的撒。。。打开那个application output就行,如果有printf会在那儿显示。
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 15 楼 dxms8 的回复:]
你如果用qtcreator的话应该在application output里面有输出printf的内容。
多看看qt文档,我刚做qt的时候也完全没人教,纯粹自学,qt算简单的啦~~
[/Quote]
这个application output 怎么用呀?
我之前是这样用的:
printf("%d",num);
fflush(stdout);
dxms8
2011-08-04
打赏
举报
回复
你如果用qtcreator的话应该在application output里面有输出printf的内容。
多看看qt文档,我刚做qt的时候也完全没人教,纯粹自学,qt算简单的啦~~
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 13 楼 dxms8 的回复:]
这不是包不包这个头文件的问题哈,你要用到这个变量的话肯定要包的咯。
而这个变量的值具体是多少当然是依据程序流程中的赋值了。
[/Quote]
我又改了改我的程序 这次感觉应该修改了那个全局变量的值 但是在另外一个文件中怎么就体现不出来这个全局变量被修改了呀
还有就是 我用printf 调试 怎么屏幕上就是没有信息 就一堆对话框.......
哎呀 头疼
刚出来工作 刚接触QT 公司连个可以请教的人都没有.........
dxms8
2011-08-04
打赏
举报
回复
这不是包不包这个头文件的问题哈,你要用到这个变量的话肯定要包的咯。
而这个变量的值具体是多少当然是依据程序流程中的赋值了。
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 11 楼 dxms8 的回复:]
引用 10 楼 ganzhiabc 的回复:
引用 9 楼 dxms8 的回复:
检查下信号槽有没有连对,赋值什么的应该没什么问题
我感觉那全局变量的值没有变 没有任何变化
那要么就是没有调那函数,要么就是没有进那些if条件,这些只有lz自己好好检查下了。
[/Quote]
我在问你个问题吧 谢谢你啦
在单独的一个.h .cpp中定义一个全局变量并且初始化为0,
若以一个文件包含这个头文件后,修改了这个全局变量的值,改为了1, 另外一个文件再包含这个全局变量的头文件时它的值是 1 还是 0 呀?
dxms8
2011-08-04
打赏
举报
回复
[Quote=引用 10 楼 ganzhiabc 的回复:]
引用 9 楼 dxms8 的回复:
检查下信号槽有没有连对,赋值什么的应该没什么问题
我感觉那全局变量的值没有变 没有任何变化
[/Quote]
那要么就是没有调那函数,要么就是没有进那些if条件,这些只有lz自己好好检查下了。
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 9 楼 dxms8 的回复:]
检查下信号槽有没有连对,赋值什么的应该没什么问题
[/Quote]
我感觉那全局变量的值没有变 没有任何变化
dxms8
2011-08-04
打赏
举报
回复
检查下信号槽有没有连对,赋值什么的应该没什么问题
dxms8
2011-08-04
打赏
举报
回复
你直接在main里面写printf看看,如果真无法看到printf的话你只能去检查代码了。
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 5 楼 dxms8 的回复:]
printf之后写fflush(stdout);
[/Quote]
帮我看看问题出哪儿了呗 谢谢了! 万分感谢!
源代码如下:
全局变量定义:
.h文件:
#ifndef LAYOUT_H
#define LAYOUT_H
class layout {
public:
static int num;
};
#endif
.cpp文件:
#include "layout.h"
int layout::num = 0;
修改全局变量值的文件:
.h文件:
#ifndef PICLAYOUTDLG_H
#define PICLAYOUTDLG_H
#include <QDialog>
#include <QtGui>
namespace Ui {
class piclayoutDlg;
}
class piclayoutDlg : public QDialog
{
Q_OBJECT
public:
explicit piclayoutDlg(QWidget *parent = 0);
~piclayoutDlg();
private:
Ui::piclayoutDlg *ui;
private slots:
void on_pushButton_clicked();
};
#endif
.cpp文件:
#include "piclayoutdlg.h"
#include "ui_piclayoutdlg.h"
#include "layout.h"
class layout;
piclayoutDlg::piclayoutDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::piclayoutDlg)
{
ui->setupUi(this);
ui->label->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label->setLineWidth(2);
ui->label_2->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_2->setLineWidth(2);
ui->label_3->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_3->setLineWidth(2);
ui->label_4->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_4->setLineWidth(2);
ui->label_5->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_5->setLineWidth(2);
ui->label_6->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_6->setLineWidth(2);
ui->label_7->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_7->setLineWidth(2);
ui->label_8->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_8->setLineWidth(2);
ui->label_9->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_9->setLineWidth(2);
ui->label_10->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_10->setLineWidth(2);
ui->label_11->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_11->setLineWidth(2);
ui->label_12->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_12->setLineWidth(2);
ui->label_13->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_13->setLineWidth(2);
ui->label_14->setFrameStyle(QFrame::Panel | QFrame::Plain);
ui->label_14->setLineWidth(2);
}
piclayoutDlg::~piclayoutDlg()
{
delete ui;
}
void piclayoutDlg::on_pushButton_clicked()
{
if(ui->radioButton->isDown() == true){
layout::num = 1;
}else if(ui->radioButton_2->isDown() == true){
layout::num = 2;
}else if(ui->radioButton_3->isDown() == true){
layout::num = 3;
}else if(ui->radioButton_4->isDown() == true){
layout::num = 4;
}else if(ui->radioButton_5->isDown() == true){
layout::num = 5;
}
printf("%d\n",layout::num);
fflush(stdout);
accept();
}
根据全局变量的值的不同做出相应变化的文件:
.h文件:
#ifndef RECDLG_H
#define RECDLG_H
#include <QDialog>
#include "camerdlg.h"
#include "bzsxdlg.h"
#include "picoptdlg.h"
#include "viopradlg.h"
#include "cloprodlg.h"
#include "telnetdlg.h"
#include "lookdlg.h"
#include "piclayoutdlg.h"
namespace Ui {
class recDlg;
}
class recDlg : public QDialog
{
Q_OBJECT
public:
explicit recDlg(QWidget *parent = 0);
~recDlg();
private:
Ui::recDlg *ui;
bzsxDlg stdsx_n;
camerDlg camerdlg;
picoptDlg picoptdlg;
viopraDlg viopradlg;
cloproDlg clopradlg;
telnetDlg telnetdlg;
lookDlg lookdlg; /* new */
piclayoutDlg piclayout;
piclayoutDlg *piclayoutdlg;
private slots:
void on_pushButton_5_clicked();
void on_pushButton_9_clicked();
void on_pushButton_12_clicked();
void on_pushButton_10_clicked();
void on_pushButton_7_clicked();
void on_pushButton_6_clicked();
void on_pushButton_4_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
};
#endif // RECDLG_H
.cpp 文件:
#include "recdlg.h"
#include "ui_recdlg.h"
#include "camerdlg.h"
#include "picoptdlg.h"
#include "piclayoutdlg.h"
#include <QtGui>
#include "layout.h"
class layout;
//extern static int num;
recDlg::recDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::recDlg)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint); // 去掉标题栏
QHBoxLayout *horizontalLayout_11 = new QHBoxLayout;
horizontalLayout_11->addWidget(ui->pushButton_9);
horizontalLayout_11->addWidget(ui->pushButton_10);
QHBoxLayout *horizontalLayout_12 = new QHBoxLayout;
horizontalLayout_12->addWidget(ui->pushButton_11);
horizontalLayout_12->addWidget(ui->pushButton_12);
ui->verticalLayout_3->addWidget(ui->groupBox_3);
ui->verticalLayout_3->addLayout(ui->horizontalLayout_10);
ui->verticalLayout_3->addLayout(horizontalLayout_11);
ui->verticalLayout_3->addLayout(horizontalLayout_12);
// QDesktopWidget *desktop = QApplication::desktop();
QHBoxLayout *horizontalLayout_13 = new QHBoxLayout;
horizontalLayout_13->addWidget(ui->label_3);
horizontalLayout_13->addWidget(ui->horizontalSlider);
QHBoxLayout *horizontalLayout_14 = new QHBoxLayout;
horizontalLayout_14->addWidget(ui->label_4);
horizontalLayout_14->addWidget(ui->horizontalSlider_2);
}
recDlg::~recDlg()
{
delete ui;
}
void recDlg::on_pushButton_3_clicked()
{
// accept();
hide(); //隐藏当前对话框
stdsx_n.showFullScreen(); //全屏显示案件信息
if(stdsx_n.exec()==QDialog::Accepted){
showFullScreen(); //返回时仍然全屏显示案件信息
}
}
void recDlg::on_pushButton_2_clicked()
{
camerdlg.show(); //显示摄像机设置页面 全屏会不会很难看
}
void recDlg::on_pushButton_4_clicked()
{
picoptdlg.show(); //显示画面选择页面 全屏会不会很难看
}
void recDlg::on_pushButton_6_clicked() //点击视频参数控制按钮时显示视频参数控制页面
{
viopradlg.show(); //全屏会不会很难看
}
void recDlg::on_pushButton_7_clicked() //点击云台参数是显示云台参数页面
{
clopradlg.show(); //全屏会不会很难看
}
void recDlg::on_pushButton_10_clicked() //退出视频录制页面
{
close();
}
void recDlg::on_pushButton_12_clicked() //显示远程指挥页面
{
telnetdlg.showFullScreen();
/* new */
if(telnetdlg.exec()==QDialog::Accepted){ //同意后
close();
lookdlg.showFullScreen(); //全屏显示
}
}
void recDlg::on_pushButton_9_clicked() //返回功能模块页面
{
close();
accept();
}
void recDlg::on_pushButton_5_clicked() // 按下画面选择按钮
{
piclayout.show();
if(layout::num == 1 && piclayout.exec() == QDialog::Accepted ){
ui->pushButton_12->hide();
ui->groupBox_3->hide(); // ?
}
}
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 5 楼 dxms8 的回复:]
printf之后写fflush(stdout);
[/Quote]
我刚才试了 什么也没显示出来呀 没有反应
dxms8
2011-08-04
打赏
举报
回复
printf之后写fflush(stdout);
GANZHIABC
2011-08-04
打赏
举报
回复
[Quote=引用 3 楼 dxms8 的回复:]
没有代码很难判断丫,建议lz在赋值和取值的地方都用printf把当前值打出来看看,调试下。
[/Quote]
我用printf打过一次当前值 但是运行的时候没有显示出来呀 我是在windows环境下装的QT Creator,然后写的程序 这个怎么办呀?
加载更多回复(1)
Qt
:一个强大而灵活的跨平台应用程序
开发
框架
代码示例中的源代码是简单的示例,用于演示
Qt
框架的一些基本特性。实际应用中,
开发
人员可以根据自己的需求和项目要求,使用
Qt
框架提供的丰富功能和组件进行
开发
。在
Qt
的官方文档和示例代码中,您可以找到更多详细的教程和示例,以帮助您更好地理解和使用
Qt
框架。它提供了丰富的工具和功能,支持跨多个平台进行
开发
,并具有高度的可定制性和灵活性。它提供了丰富的工具和功能,使得
开发
人员能够创建高性能、可扩展和易于维护的应用程序。下面将详细介绍
Qt
框架的优点,并提供一些相关的源代码示例。
QT
跨平台应用程序
开发
框架(1)—— 环境搭建
其实说是安装三个东西,其实只要安装一个
Qt
SDK,其它两个都有了。之后一路点击下一步即可,就是安装路径不要带中文,不要带特殊符号和空格。创建好项目后会预先生成一些代码,我们来讲解一下这些代码做了什么。Windows下还有哪些方案可以
开发
GUI?之后一路确认然后安装即可。
QT
跨平台应用程序
开发
框架(5)—— 常用按钮控件
QPushButton 表示一个按钮,我们前面使用过很多次,继承自 QAbstractButton,这个类是一个抽象类,是其他按钮的父类,如下图:c++面向对象三大特性——多态_c++三大特性实例-CSDN博客是一个包含纯虚函数的类,无法创建出实例,仅仅是为了被派生类继承并且派生类继承后后也不能实例化出对象。只有重写虚函数派生类才能实例化出对象属性说明text按钮中的文本icon按钮中的图标iconSize按钮中图标的尺寸shortCut按钮对应的快捷键autoRepeat。
QT
跨平台应用程序
开发
框架(8)—— 多元素控件
所以要想数据不被丢失,就得需要和“学生管理系统”一样,实现一个“保存数据到文件”和“从文件读取数据”的两个操作,每次运行程序时读取文件数据,每次关闭程序时,在析构函数里添加保存文件的操作。
QT
reeWidget 表示一个树形控件,里面的每个元素都是一个
QT
reeWidgetItem,这个类可以包含多个文本和图标,每个文本/图标为一个列。上述几个控件相关的操作,数据都是在内存中保存的,重新运行程序后,数据都会重置。可以发现,说是6个控件,其实是3个,只是两两一组而已。
QT
跨平台应用程序
开发
框架(2)—— 初识
QT
目录一,创建helloworld1.1 通过图形化1.2 通过代码1.3 通过编辑框1.4 使用按钮二,对象树2.1 关于对象树2.2 演示释放流程三,乱码问题3.1 为什么会有乱码问题3.2 解决乱码问题四,认识
Qt
坐标系五,周边5.1 命名规范5.2 快捷键5.3 如何使用帮助文档先双击 .ui 文件来到图形化编辑页面:然后就会在页面的右上方显示我们安装的控件:最后我们点击左下角运行按钮,我们创建的窗口上就会显示一个hello world字符串之后我们就可以往label对象里面设置一个文本:之后直接运行
Qt
21,499
社区成员
26,692
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章