qt5如何定义一个全局窗口对象呀,就是可以在不同的cpp文件里面调用另一个cpp的函数的

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
版权声明该文章原创于Qter开源社区(),作者yafeilinux,转载请注明出处!导语这一篇我们来加上查找菜单的功能。因为要涉及Qt Creator的很多实用功能,所以单独用一篇文章来介绍。以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框。除了讲解怎么实现查找功能,这里还详细地说明了怎么进行类中方法的查找和使用。其中也讲解了Qt Creator程序中怎样在函数的声明位置和定义位置间进行快速切换。环境是:Windows 7 + Qt 4.8.1+ Qt Creator 2.4.1目录一、添加查找对话框二、实现查找功能正文一、添加查找对话框1.我们继续在前一篇程序的基础之上进行更改。首先到mainwindow.h文件中添加类的前置声明(对于什么是前置声明,以及这样使用的好处,可以在网上百度):class&QLineEdit;class&QDialog;前置声明所在的位置跟头文件包含的位置相同。然后在private中添加对象定义:QLineEdit&*findLineEdit;QDialog&*findDlg;下面再添加一个私有槽声明:private&slots:& &&void&showFindText();槽可以看做是一个函数,只不过可以和信号进行关联。2.下面到mainwindow.cpp文件中,因为前面在头文件中使用了类的前置声明,所以这里需要先添加头文件包含:#include&&QLineEdit&#include&&QDialog&#include&&QPushButton&然后在构造函数中进行初始化操作,即添加如下代码:findDlg = new QDialog(this);findDlg-&setWindowTitle(tr("查找"));findLineEdit = new QLineEdit(findDlg);QPushButton&*btn= new QPushButton(tr("查找下一个"),&findDlg);QVBoxLayout&*layout= new QVBoxLayout(findDlg);layout-&addWidget(findLineEdit);layout-&addWidget(btn);connect(btn, SIGNAL(clicked()), this, SLOT(showFindText()));这里创建了一个对话框,然后将一个行编辑器和一个按钮放到了上面,并使用布局管理器进行布局。最后将按钮的单击信号关联到了自定义的显示查找到的文本槽上。下面来添加该槽的定义。3.这里先说一个可以快速从头文件声明处创建函数定义的方法。到mainwindow.h文件中,将鼠标定位到showFindText()函数上,然后点击右键,在弹出的菜单中选择“重构”→“在mainwindow.cpp添加声明”,或者直接使用Alt+Enter快捷键,这样就会直接在mainwindow.cpp文件中添加函数定义,并跳转到该函数处。如下图所示。二、实现查找功能下面我们来分步骤完成showFindText()函数。在讲解过程中会涉及一些很实用的功能的介绍。1.先在函数中添加一行代码来获取行编辑器中要查找的字符串。void&MainWindow::showFindText(){& &QString&str&=&findLineEdit-&text();}2.在下一行,我们先输入ui,然后按下键盘上的“&.”键,这时就会自动输入“.”或者“-&”,并且列出ui上所有可用部件的对象名。如下图所示。3.我们要输入textEdit,先输入t,这时会自动弹出textEdit,只需要按下回车键即可。如下图所示。4.下面我们将光标放到textEdit上,这时就会出现QTextEdit类的简单介绍,如下图所示。5.按照提示,我们按下键盘上的F1键,就会在编辑器的右侧打开QTextEdit类的帮助文档。如下图所示。这时还可以按下上面的“切换至帮助模式”来进入到帮助模式中打开该文档。6.我们在该类的Public Functions公共函数列表中发现有一个find()函数。如下图所示。7.从字面意思上可以知道该函数应该是用于查找功能的,我们点击该函数进入到它的详细介绍处。如下图所示。8.根据介绍可以知道该函数用于查询指定的exp字符串,如果找到了就将光标跳转到查找到的位置,如果没有找到就返回false。这个函数还有一个QTextDocument::FindFlags参数,为了了解该参数的意思,我们点击该参数进入其详细介绍处。如下图所示。可以看到该参数是一个枚举变量,用来指定查找的方式,分别是向后查找、区分大小写、全词匹配等。如果不指定该参数,默认的是向前查找、不区分大小写、包含该字符串的词也可以查找到。这几个变量还可以使用“|”符号来一起使用。9.根据帮助,我们补充完该行代码:ui-&textEdit-&find(str, QTextDocument::FindBackward);10.&这时已经能实现查找的功能了。但是我们刚才看到find的返回值类型是bool型,而且,我们也应该为查找不到字符串作出提示。将这行代码更改为:if&(!ui-&textEdit-&find(str, QTextDocument::FindBackward)){& &QMessageBox::warning(this, tr("查找"),& && && && &tr("找不到%1").arg(str));}到这里查找函数就基本讲完了。11.&我们会发现随着程序功能的增强,其中的函数也会越来越多,我们都会为查找某个函数的定义位置感到头疼。而在QtCreator中有几种快速定位函数的方法。第一种,在函数声明的地方直接跳转到函数定义的地方。例如我们在mainwindow.h文件的loadFile()函数上点击鼠标右键,在弹出的菜单上选择“在方法声明/定义之间切换”,这时就会自动跳转到mainwindow.cpp文件中该函数的定义处。如下图所示。当然还可以反向使用。第二种,快速查看一个文件里的所有函数。可以在编辑器正上方的下拉框里查看正在编辑的文件中所有的函数的列表,点击一个函数就会跳转到指定位置。如下图所示。第三种,使用类视图或者大纲视图。在项目列表上面的下拉框中可以更改查看的内容,如果选择为类视图或者大纲,则会显示文件中所有的函数的列表。如下图所示。第四种,使用查找功能查看函数的所有调用处。在一个函数名上点击鼠标右键,然后选择“查找何处被使用”菜单,这时就会在下面的搜索结果栏中显示该函数所有的使用位置。我们可以通过点击一个位置来跳转到该位置。如下图所示。12.最后,我们来实现界面上的查找功能。从设计模式进入查找动作的触发信号的槽,更改如下:void&MainWindow::on_action_Find_triggered(){& &findDlg-&show();}这时运行程序,效果如下图所示。结语讲到这里,我们已经很详细地说明了怎样去使用一个类里面未接触过的函数;也说明了Qt Creator中的一些便捷操作。可以看到,Qt Creator开发环境,有很多很人性化的设计,我们应该熟练应用它们。在以后的文章中,我们不会再很详细地去用帮助来说明一个函数是怎么来的,该怎么用,这些应该自己试着去查找。
阅读(2982)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'[Qt教程] 第7篇 基础(七)实现Qt文本查找功能',
blogAbstract:'实现Qt文本查找功能',
blogTag:'qt',
blogUrl:'blog/static/0',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/0',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Qt 第三章 创建主窗口--实现File菜单
今天有空接着Qt创建主窗口File菜单的实现,创建主窗口对于我来说确实有些难度,平时不努力学C/C++,现在从头开始很费劲.现在感慨,书到用时方恨少呀。接下来做一个简单的文本编辑器,给文本编辑器添加信号与槽.前面子类化QMainWindow、菜单栏和工具栏、状态栏都做好了。接下来实现文件菜单的信号与槽的链接。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//60.jpg" border="0" />
先实现菜单栏中的菜单栏中文件栏的exit动作和帮助栏中的信号与槽,这是最简单的。帮助栏一个是关于,一个是Qt版本信息。
about要建立创建一个about()函数,用来显现一个带有标题,文本内容的的about消息框,这个about消息框父控件是自己本身。About()函数寻找图标是通过icon()函数查找,作为最后使用的信息图标。这里要用到上一篇QMessageBox创建消息框的知识,而about Qt直接用QApplication调用Qt图形化应用程序的qApp对象来实现,qApp是一个全局指针指的是独立的应用对象。而退出动作也是,直接调用qApp中的closeAllWindows()函数来实现。在mainwindow.h头文件类MainWindow主窗口对象里添加Q_OBJECT信号和槽的一个宏定义。定义一个私有信号槽about()函数,当点击about时,触发触发器发出信号,给链接的制定的about槽函数,然后实现对于主窗口about()函数的功能。点击信号与槽链接在mainwindow.cppC++源文件中定义,运行效果如下:
connect(exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
void MainWindow::about()
&&& QMessageBox::about(this, tr("About Recent Files"),
&&&&&&&&&&&& tr("The &b&Recent Files&/b& example demonstrates how to provide a "
&&&&&&&&&&&&&&& "recently used file menu in a Qt application."));
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//71.jpg" border="0" />
接着实现新建文件的功能,其实这个也蛮简单的,在mainwindow.h头文件中声明newFile()函数,在mainwindow.cpp文件中添加信号与槽的链接。
connect(newAction, SIGNAL(triggered()), this, SLOT(newFile()));
下面是newFile()函数实现的功能,创建一个主窗口对象,将主窗口对象窗口部件显示出来,当点击new是,触发新建触发器发出信号到指定的槽中,然后调用newFile函数来实现新建一个主窗口功能。当想要关闭所有的主窗口时,先关闭打开的消息框,点击File栏中的exit退出或直接Ctrl+Q即可。
void MainWindow::newFile()
&&&& MainWindow *other = new MainW
&&&& other-&show();
&650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//82.jpg" border="0" />
先定义字符串strippedName()函数,用字符创strippedName函数调用窗口部件设置标题setWindowTitle()函数周围的文件名来缩短排除路径。在函数里面构造一个新的QFileInfo()文件信息函数,获取特定文件的相关信息。该文件包含绝对路径或相对路径。为什么我先定义这个strippedName()函数呢?因为当你创建open()函数这个动作链接信号与槽,都会用到这个函数。依此根据错误提示,找到的最后面的函数就是strippedName()函数。然后根据错误提示,反过来添加其所有满足的函数功能。接着就是创建更新最近文件数据动作updateRecentFileActions()函数,在创建函数前先声明一个枚举类型构造函数,给枚举类型MaxRecentFile赋值。然后定义一个更新文件的指针数组动作变量。在主函数中用createActions()函数中用for循环来记录文件文件,用setVisible()显示文件。最后添加设置setCurrentFile()函数。在声明设置当前文件函数前前,先定义一个字符串变量,curfile.用来获取文件名的字符串变量。接着就可以添加其他功能了,比如打开、另存、保存。如果有剪切、复制、粘贴功能都可以添加。如果有做程序员想法,可以研究一下代码。很难讲的能面面俱全的。接下来实现打开功能,声明一个下载文件函数loadFile()用来判断文件的权限,获取文件名等,然后添加open()函数来实现打开文件,书写代码的顺序已经说了,在头文件声明所要用到的类、函数、对象;在源文件调用函数实现具体功能:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//93.jpg" border="0" />
接下来添加保存功能,另存功能是一样道理的。先添加保存文件saveFile()函数,在添加saveAs()函数,在添加save()函数。运行效果如下:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//04.jpg" border="0" />
最后实现打开文件的记录功能,在头文件中添加void openRecentFile()信号槽,在源文件中调用openRecentFile()实现具体的功能。然后在createActions()函数中,添加信号与槽的的链接。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
alt="" src="/upload//15.jpg" border="0" />
mainwindow.h头文件
class MainWindow : public QMainWindow{&&&& Q_OBJECT&&&& &&&& public:&&&&&&& MainWindow();&&&&&&& &&&&&&& &&&& private slots:&&&& void newFile();&&&& void open();&&&& void save();&&&& void saveAs();&&&& void openRecentFile();&&&& void about();&&&& &&&& private:&&&& void createActions();&&&& void createMenus();&&&& void createToolBars();&&&& void createStatusBar();&&&& void saveFile(const QString &fileName);&&&& void loadFile(const QString &fileName);&&&& void setCurrentFile(const QString &fileName);&&&& void updateRecentFileActions();&&&& QString strippedName(const QString &fullFileName);&&&& &&&& QString curF&&&& &&&& QTextEdit *textE&&&& QLabel *locationL&&&& &&&& &&&& QMenu *fileM&&&& QMenu *recentFilesM&&&& QMenu *helpM&&&& &&&& QToolBar *fileToolB&&&& &&&& QAction *newA&&&& QAction *openA&&&& QAction *saveA&&&& QAction *saveAsA&&&& QAction *exitA&&&& QAction *aboutA&&&& QAction *aboutQtA&&&& QAction *separatorA&&&& &&&& enum { MaxRecentFiles = 5 };&&&& QAction *recentFileActions[MaxRecentFiles];};
mainwindow.cpp源文件
MainWindow::MainWindow(){&&&&& textEdit = new QTextE&&&&& setCentralWidget(textEdit);
&&&&& createActions();&&&&& createMenus();&&&&& createToolBars();&&&&& createStatusBar();
&&&&& setWindowTitle(tr("Text Edit"));&&&&& resize(500, 400);}
void MainWindow::newFile(){&&&& MainWindow *other = new MainW&&&& other-&show();}
void MainWindow::open(){&&&& QString fileName = QFileDialog::getOpenFileName(this);&&&& if (!fileName.isEmpty())&&&&&&&& loadFile(fileName);}void MainWindow::save(){&&&& if (curFile.isEmpty())&&&&&&&& saveAs();&&&& else&&&&&&&& saveFile(curFile);}
void MainWindow::saveAs(){&&&& QString fileName = QFileDialog::getSaveFileName(this);&&&& if (fileName.isEmpty())&&&&&&&&
&&&& saveFile(fileName);}
void MainWindow::openRecentFile(){&&&& QAction *action = qobject_cast&QAction *&(sender());&&&& if (action)&&&&&&&& loadFile(action-&data().toString());}
void MainWindow::about(){&&& QMessageBox::about(this, tr("About Recent Files"),&&&&&&&&&&&& tr("The &b&Recent Files&/b& example demonstrates how to provide a "&&&&&&&&&&&&&&& "recently used file menu in a Qt application."));}
void MainWindow::createActions(){&&&& newAction = new QAction(tr("&New"), this);&&&& newAction-&setIcon(QIcon(":/images/new.png"));&&&& newAction-&setShortcut(tr("Ctrl+N"));&&&& newAction-&setStatusTip(tr("Create a new file"));&&&& connect(newAction, SIGNAL(triggered()), this, SLOT(newFile()));
&&&& openAction = new QAction(tr("&Open..."), this);&&&& openAction-&setIcon(QIcon(":/images/open.png"));&&&& openAction-&setShortcut(tr("Ctrl+O"));&&&& openAction-&setStatusTip(tr("Open an existing file"));&&&& connect(openAction, SIGNAL(triggered()), this, SLOT(open()));
&&&& saveAction = new QAction(tr("&Save"), this);&&&& saveAction-&setIcon(QIcon(":/images/save.png"));&&&& saveAction-&setShortcut(tr("Ctrl+S"));&&&& saveAction-&setStatusTip(tr("Save the document to disk"));&&&& connect(saveAction, SIGNAL(triggered()), this, SLOT(save()));
&&&& saveAsAction = new QAction(tr("Save &As..."), this);&&&& saveAsAction-&setStatusTip(tr("Save the document under a new name"));&&&& connect(saveAsAction, SIGNAL(triggered()), this, SLOT(saveAs()));
&&&& for (int i = 0; i & MaxRecentF ++i) {&&&&&&&& recentFileActions[i] = new QAction(this);&&&&&&&& recentFileActions[i]-&setVisible(false);&&&&&&& connect(recentFileActions[i], SIGNAL(triggered()),&&&&&&&&&&&&&&&& this, SLOT(openRecentFile()));&&&& }
&&&& exitAction = new QAction(tr("E&xit"), this);&&&& exitAction-&setShortcut(tr("Ctrl+Q"));&&&& exitAction-&setStatusTip(tr("Exit the application"));&&&& connect(exitAction,SIGNAL(triggered()),qApp,SLOT(closeAllWindows()));
&&&& aboutAction = new QAction(tr("&About"), this);&&&& aboutAction-&setStatusTip(tr("Show the application's About box"));&&&& connect(aboutAction, SIGNAL(triggered()),this,SLOT(about()));
&&&& aboutQtAction = new QAction(tr("About &Qt"), this);&&&& aboutQtAction-&setStatusTip(tr("Show the Qt library's About box"));&&&& connect(aboutQtAction,SIGNAL(triggered()),qApp,SLOT(aboutQt()));}
void MainWindow::createMenus(){&&&& fileMenu = menuBar()-&addMenu(tr("&File"));&&&& fileMenu-&addAction(newAction);&&&& fileMenu-&addAction(openAction);&&&& fileMenu-&addAction(saveAction);&&&& fileMenu-&addAction(saveAsAction);&&&& separatorAction = fileMenu-&addSeparator();&&&& for (int i = 0; i & MaxRecentF ++i)&&&&&&&& fileMenu-&addAction(recentFileActions[i]);&&&& fileMenu-&addSeparator();&&&& fileMenu-&addAction(exitAction);
&&&& menuBar()-&addSeparator();
&&&& helpMenu = menuBar()-&addMenu(tr("&Help"));&&&& helpMenu-&addAction(aboutAction);&&&& helpMenu-&addAction(aboutQtAction);}
void MainWindow::createToolBars(){&&& fileToolBar = addToolBar(tr("&File"));&&& fileToolBar-&addAction(newAction);&&& fileToolBar-&addAction(openAction);&&& fileToolBar-&addAction(saveAction);}
void MainWindow::createStatusBar(){&&& locationLabel = new QLabel(" ready ");&&& locationLabel-&setAlignment(Qt::AlignHCenter);&&& locationLabel-&setMinimumSize(locationLabel-&sizeHint());&&& statusBar()-&addWidget(locationLabel);
void MainWindow::loadFile(const QString &fileName){&&&& QFile file(fileName);&&&& if (!file.open(QFile::ReadOnly | QFile::Text)) {&&&&&&&& QMessageBox::warning(this, tr("Recent Files"),&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tr("Cannot read file %1:\n%2.")&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .arg(fileName)&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .arg(file.errorString()));&&&&&&&&&&&& }
&&&& QTextStream in(&file);&&&& QApplication::setOverrideCursor(Qt::WaitCursor);&&&& textEdit-&setPlainText(in.readAll());&&&& QApplication::restoreOverrideCursor();
&&&& setCurrentFile(fileName);&&&& statusBar()-&showMessage(tr("File loaded"), 2000);}
void MainWindow::saveFile(const QString &fileName){&&&& QFile file(fileName);&&&& if (!file.open(QFile::WriteOnly | QFile::Text)) {&&&&&&&& QMessageBox::warning(this, tr("Recent Files"),&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tr("Cannot write file %1:\n%2.")&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .arg(fileName)&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .arg(file.errorString()));&&&&&&&&&&&& }
&&&& QTextStream out(&file);&&&& QApplication::setOverrideCursor(Qt::WaitCursor);&&&& out && textEdit-&toPlainText();&&&& QApplication::restoreOverrideCursor();
&&&& setCurrentFile(fileName);&&&& statusBar()-&showMessage(tr("File saved"), 2000);&}
void MainWindow::setCurrentFile(const QString &fileName){&&&& curFile = fileN&&&& if (curFile.isEmpty())&&&&&&&& setWindowTitle(tr("Recent Files"));&&&& else&&&&&&&& setWindowTitle(tr("%1 - %2").arg(strippedName(curFile))&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .arg(tr("Recent Files")));
&&&& QSettings settings("Trolltech", "Recent Files Example");&&&& QStringList files = settings.value("recentFileList").toStringList();&&&& files.removeAll(fileName);&&&& files.prepend(fileName);&&&& while (files.size() & MaxRecentFiles)&&&&&&&& files.removeLast();
&&&& settings.setValue("recentFileList", files);
&&&& foreach (QWidget *widget, QApplication::topLevelWidgets()) {&&&&&&&& MainWindow *mainWin = qobject_cast&MainWindow *&(widget);&&&&&&&& if (mainWin)&&&&&&&&&&&& mainWin-&updateRecentFileActions();&&&& }}
void MainWindow::updateRecentFileActions(){&&&& QSettings settings("Trolltech", "Recent Files Example");&&&& QStringList files = settings.value("recentFileList").toStringList();
&&&& int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
&&&& for (int i = 0; i & numRecentF ++i) {&&&&&&&& QString text = tr("&%1 %2").arg(i + 1).arg(strippedName(files[i]));&&&&&&&& recentFileActions[i]-&setText(text);&&&&&&&& recentFileActions[i]-&setData(files[i]);&&&&&&&& recentFileActions[i]-&setVisible(true);&&&& }&&&& for (int j = numRecentF j & MaxRecentF ++j)&&&&&&&& recentFileActions[j]-&setVisible(false);
&&&& separatorAction-&setVisible(numRecentFiles & 0);}
QString MainWindow::strippedName(const QString &fullFileName){&&&& return QFileInfo(fullFileName).fileName();}
嘿嘿...感觉到搞程序的很累...
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。如何在vba中设置一个全局变量,使得所有窗体都可以使用这个变量?
如何在vba中设置一个全局变量,使得所有窗体都可以使用这个变量?&
回复讨论(解决方案)
在模块里定义变量:
dim&w1&as&string
public&w1&as&string
21:31&&&[]
做项目的时候,需要权限管理。我就想用个全局变量来标志每个登陆用户的权限,所以就需要一个在所有CPP文件中都能访问到的全局变量。请问怎么申明,然后怎么使用?谢谢
回复讨论(解决方案)
qt没用过,
在一个头文件中&extern&变量类型&变量名,在cpp中声明
-16:05&&&[]
我做的一个简单登陆验证程序,设置全局变量&users&记录登陆人的ID。然后其他窗体根据useers的记录来判断是否允许进行操作。现在只有登陆密码校验的窗体能直接使用这个变量赋值,其他窗体里使用就会提示“缺少过程,不是变量”。请问这是会是什么原因?
回复讨论(解决方案
-19:10&&&[]
如何声明一个项目级变量a,使得a在本项目的所有代码文件中可以共享
回复讨论(解决方案)
楼主说的是全局变量么?
public&a&as&string&&&&&
public&a&nbsp
13:57&&&[]
,VAR下面定义,不过在别的窗体中用的时候还是要引用主窗体的单元。
哦,知道了&&哪我定义一个公用pas&引用了在&附值&是吧
对,就叫它UnitGlobal.pas吧,吼吼
19:47&&&[]
如题&& 如何在基于对话框中定义全局变量
在Stdafx.H里申明
extern&int&pData[5];
在Stdafx.cpp里定义
int&&pData[5]={0};
这样定义使用对吗对吗
17:57&&&[]
公共单元中定义全局变量,和公共函数;
3、在其它单元、窗体中加入Uses&MyOwn。
4、在其它单元、窗体中即可,直接使用全局变量,和公共函数。
我做了三个窗体,比如Form1中有个变量data1,在Form2中引用了这个变量,而在Form3中我想用Form2
-19:47&&&[]
我遇到一个问题,我需要在整个工程里面随时修改一个变量的值,其他所有包含这个变量文件的变量都随之改变。
哪位高手能给出一个简单的例子?
我想了一天都没有找到合适的方案,涉及到的都是两个文件使用全局变量。
请高手指教,必有重谢!
回复讨论(解决方案)
lz&没搞清楚全局变量的用法
-19:12&&&[]
回复讨论(解决方案)
是不是引用的类库不足呢?
没人知道吗?一个FORM向另一个FORM传值应该用什么方法?
终于明白了。定义静态变量。
静态变量可以了么,学习一下
可以使用全局变量的方式传给数据库处理,但不推荐这样使用,因为这样容易造成业务逻辑层与数据访问层相互引用.你可以
-11:40&&&[]
&web应用中有个session对象可以保存全局变量,&请问一下j2se桌面应用中如何设置一个全局变量,供其他的JFrame直接获取。。。
&业务描述:用户登入,记录用户登入信息,输入用户名后,我加载了一个系统托盘,没有显示FrmMain窗口,可以通过点击右下角图标
-16:37&&&[]
&1.java&文件里&定义一个变量&比如:布尔型的:&&FLAG
&在&2.java里也可以使用
也就是说,这个变量&FLAG&可以在整个工程内都有效呢?
-00:01&&&[]
会有冲突么?&会不会自动生成本地存储,使得多个进程各自对于该全局变量拥有一个实例?
回复讨论(解决方案)
一个dll函数,有一个全局变量,dll被多个进程使用时,互不干扰。
一个dll函数,有一个全局变量,dll被多个线程使用时,使用同一个全局变量。
非共享的变量,每个进程
-10:56&&&[]}

我要回帖

更多关于 cpp 全局变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信