我正在研究信号和插槽。
这是mainwindow.h
....
public slots:
void slotChangeName();
....
mainwindow.cpp;
#include<globals.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QObject::connect(project_created,SIGNAL(selectionChanged()),this,SLOT(slotChangeName()))
}
void MainWindow::slotChangeName()
{
ui->project_name->setText(project_directory);
}
创建项目时,全局变量&#34; project_created&#34;更新为1.我想在&#34; project_created&#34;时编写标签上的项目目录。更新。我该怎么办?
globals.h
#ifndef GLOBALS_H
#define GLOBALS_H
class QString;
extern int project_created;
extern QString project_directory;
#endif
globals.cpp
#include "globals.h"
#include <QString>
// ALL THE GLOBAL DEFINITIONS
int project_created = 0;
QString project_directory = "";
当人们点击新项目时,他们可以创建项目文件夹。之后,project_created更新为1.我想将项目名称nnext写入黄色文件夹图标。
答案 0 :(得分:0)
你需要一对[{1] QObject
来使用QT的信号和插槽机制。一个int变量不会神奇地导致代码被执行,这就像你在这里尝试的那样。
您的“创建项目”对话框是定义信号的合理位置,MainWindow可以连接到该信号。
class ProjectCreateDialog : ... {
...
signals:
void projectCreated(QString);
...
}
class MainWindow : ... {
...
void createProject();
public slots:
void slotChangeName(QString project_directory);
...
}
void MainWindow::createProject()
{
ProjectCreateDialog dialog;
connect(&dialog, SIGNAL(projectCreated(QString)), this, SLOT(onChangeName(QString)));
dialog.exec();
}
void MainWindow::onChangeName(QString project_directory)
{
ui->project_name->setText(project_directory);
}
[1]好吧,你可以使用相同的QObject
两次