一個專案里面分成了很多的模塊,我現在需要實作的功能就是,我上傳檔案之后,需要呼叫到另一個模塊的渲染功能(并不是在當前模塊渲染),就是類似手動去觸發一下插槽函式,當前模塊沒辦法直接參考到另一個模塊的頭檔案,這種情況我要怎么在上傳檔案之后去呼叫一次另一個模塊的函式呢,求解!
uj5u.com熱心網友回復:
加油!我看了,但沒看懂,領域不同!uj5u.com熱心網友回復:
我重新描述一下問題吧,可能上面說的不是很清楚
一個加載整個檔案夾的模塊,加載之后,會賦值給渲染模塊需要的資料,賦值完成之后,我希望默認去呼叫渲染模塊的渲染功能,其實就是個按鈕,
我想手動去觸發一下。
遇到的幾個問題:
1、渲染按鈕的事件函式是受保護成員在其他類無法直接呼叫。
2、檔案加載模塊,無法直接引入渲染模塊的頭檔案,但是可以通過添加依賴路徑引入(但是這樣會讓當前模塊嵌入了其他模塊的東西,盡可能不想這樣)
3、我試圖創建友元,但是提示我創建友元無效。
4、破除2的限制之后并把事件函式改成公共函式,會導致其他地方的未決議符號問題,但是可以呼叫,只是呼叫并沒有進入功能實作的邏輯,而是直接回傳了
5、我嘗試復制函式內容在檔案模塊實作,但是要用到 Q_D();識別符號,里面會初始化一個d物件,但是我在檔案模塊是沒有這個Q_D識別符號的,也沒辦法初始化d物件
我只是c++新手,所以上面可能是我自己鉆進死胡同了,希望大家能提出自己的意見
uj5u.com熱心網友回復:
肯定你寫的有問題啊 仔細看uj5u.com熱心網友回復:
你是QT的么,檔案加載模塊定義信號,上層系結信號到旋轉模塊的槽函式不就行了???子模塊不相關啊.類似這樣,代碼全手寫,將就看吧,你實際類不在同一個檔案 沒問題,只要類有就行,new物件自己寫.例如:
class A{
signals:
void fileLoaded();
};
class B{
public slots:
void onFileLoaded(){
//內部呼叫渲染
}
};
class Core{
public:
Core(){
connect(a, SIGNAL(fileLoaded()), b,SLOT(onFileLoaded());
}
public:
A* a;
B* b;
};
uj5u.com熱心網友回復:
你是QT的么,檔案加載模塊定義信號,上層系結信號到旋轉模塊的槽函式不就行了???子模塊不相關啊.類似這樣,代碼全手寫,將就看吧,你實際類不在同一個檔案 沒問題,只要類有就行,new物件自己寫.
例如:
class A{
signals:
void fileLoaded();
};
class B{
public slots:
void onFileLoaded(){
//內部呼叫渲染
}
};
class Core{
public:
Core(){
connect(a, SIGNAL(fileLoaded()), b,SLOT(onFileLoaded());
}
public:
A* a;
B* b;
};
加油!我看了,但沒看懂,領域不同!
我重新描述一下問題吧,可能上面說的不是很清楚
一個加載整個檔案夾的模塊,加載之后,會賦值給渲染模塊需要的資料,賦值完成之后,我希望默認去呼叫渲染模塊的渲染功能,其實就是個按鈕,
我想手動去觸發一下。
遇到的幾個問題:
1、渲染按鈕的事件函式是受保護成員在其他類無法直接呼叫。
2、檔案加載模塊,無法直接引入渲染模塊的頭檔案,但是可以通過添加依賴路徑引入(但是這樣會讓當前模塊嵌入了其他模塊的東西,盡可能不想這樣)
3、我試圖創建友元,但是提示我創建友元無效。
4、破除2的限制之后并把事件函式改成公共函式,會導致其他地方的未決議符號問題,但是可以呼叫,只是呼叫并沒有進入功能實作的邏輯,而是直接回傳了
5、我嘗試復制函式內容在檔案模塊實作,但是要用到 Q_D();識別符號,里面會初始化一個d物件,但是我在檔案模塊是沒有這個Q_D識別符號的,也沒辦法初始化d物件
我只是c++新手,所以上面可能是我自己鉆進死胡同了,希望大家能提出自己的意見
這是我渲染模塊的槽函式
你是QT的么,檔案加載模塊定義信號,上層系結信號到旋轉模塊的槽函式不就行了???子模塊不相關啊.類似這樣,代碼全手寫,將就看吧,你實際類不在同一個檔案 沒問題,只要類有就行,new物件自己寫.
例如:
class A{
signals:
void fileLoaded();
};
class B{
public slots:
void onFileLoaded(){
//內部呼叫渲染
}
};
class Core{
public:
Core(){
connect(a, SIGNAL(fileLoaded()), b,SLOT(onFileLoaded());
}
public:
A* a;
B* b;
};
加油!我看了,但沒看懂,領域不同!
我重新描述一下問題吧,可能上面說的不是很清楚
一個加載整個檔案夾的模塊,加載之后,會賦值給渲染模塊需要的資料,賦值完成之后,我希望默認去呼叫渲染模塊的渲染功能,其實就是個按鈕,
我想手動去觸發一下。
遇到的幾個問題:
1、渲染按鈕的事件函式是受保護成員在其他類無法直接呼叫。
2、檔案加載模塊,無法直接引入渲染模塊的頭檔案,但是可以通過添加依賴路徑引入(但是這樣會讓當前模塊嵌入了其他模塊的東西,盡可能不想這樣)
3、我試圖創建友元,但是提示我創建友元無效。
4、破除2的限制之后并把事件函式改成公共函式,會導致其他地方的未決議符號問題,但是可以呼叫,只是呼叫并沒有進入功能實作的邏輯,而是直接回傳了
5、我嘗試復制函式內容在檔案模塊實作,但是要用到 Q_D();識別符號,里面會初始化一個d物件,但是我在檔案模塊是沒有這個Q_D識別符號的,也沒辦法初始化d物件
我只是c++新手,所以上面可能是我自己鉆進死胡同了,希望大家能提出自己的意見
這是我渲染模塊的槽函式
QObject::connect(this->actionCenter, SIGNAL(triggered()),
q, SLOT(resetFocalPoint()));
// 你的意思就是在下面再加一個這種形式的嗎?
QObject::connect(qIOManger, SIGNAL(loadNodes()),
q, SLOT(resetFocalPoint()));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214370.html
標籤:C++ 語言
