2017-05-22 19 views
-1

私は信号とスロットで作業しています。ここQt C++用の信号とスロット

はmainwindow.h

.... 
public slots: 
void slotChangeName(); 
.... 

mainwindow.cppです。作成したプロジェクト、グローバル変数は、「project_created」

#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); 
} 

、私は更新され、「project_created」ときラベルにプロジェクトディレクトリを書きたい1として更新されます。私は何をしなければならないのですか?

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を黄色のフォルダアイコンに書きたいと思います。

enter image description here

+0

project_createdされ、どこで定義されているどのようなタイプと同じQObjectを使用できますか? project_directoryと同じ – Caleth

+0

これらはグローバル変数です。グローバルクラスで定義し、メインクラスに含めました。 Project_createdはint @Calethです – dizel

+0

project_createdは 'QAbstractItemView *'または同様のポインタですか?あなたは現在、私がコードを編集した – Caleth

答えて

0

あなたはQtのシグナルとスロット機構を使用するQObject S [1]のペアを必要とします。 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]だけでなく、あなたは二回

関連する問題