在QT中移植VS2010項目。如何將消息從子類對話框窗口發送到主窗口。 Qt
我想,我對我以前的文章並不是很清楚,所以我在這裏再次解釋它。
問題是..我有很多sub Qdialog窗口,當用戶點擊時會生成一些消息。我希望這些消息位於我的主應用程序窗口的QTablewidget上。 現在正如一些成員所建議的那樣,我應該看看事情在VS2010中是如何完成的,並嘗試在QT中複製它們。所以這是我的設計..請讓我知道你的建議/批評。
1)與2010 - >開主應用程序窗口在
MESSAGE_MAP
我們有
ON_MESSAGE(WM_NOTICE, OnAddMessage)
其中WM_NOTICE = WM_USER + 1;
............................................ ........................................
在QT I中做同樣的事情需要信號和插槽。所以像
connect(sender , SIGNAL(QtSingleApplication::messageReceived (const QString &message) ) , this , SLOT (on_add_message(const QString & message));
東西現在我應該怎麼用
- 「發件人」取代嗎? ,誰是我的情況下的發件人?
- SIGNAL(QtSingleApplication :: messageReceived)是對的嗎?
- 槽 - 這裏沒有問題..我可以實現代碼,其中我 將按照排序順序將消息放在QTable中。
............................................ .................................................. ..........
2)現在,如果我考慮這是在VC開發現有項目的內QDialog的Windows源代碼++,他們有這樣的事情
void Message_information::add(const SMS& message)
{
//SMS is a structure and fields are SYSTEMTIME, Enum , CString
CCriticalSection critical_section;
CSingleLock lock(&critical_section, true);
messages_.insert(message); // where messages_ is an object std::multiset
SendMessage(dialog_->m_hWnd, WM_MULTIBOXMESSAGE, 0, 0);
}
現在做的一樣Qt
v
oid Message_information::add(const SMS& message)
{
QMutex mutex;
mutex.lock();
messages_.insert(message); // where messages_ is an object std::multiset
//SendMessage(dialog_->m_hWnd, WM_MULTIBOXMESSAGE, 0, 0);
QtSingleApplication::sendMessage (// send multiset values here );
}
我應該添加什麼paramemter在SendMessage函數?
IS infact sendMessage是否調用正確的函數?
'add'函數被調用到其他地方。我知道這聽起來是其他問題的重複,我已經查看了我的一些成員提供的鏈接,但我很抱歉,我無法掌握很多。 - 任何建議或批評可能會幫助我..幫助很多
如果你從MFC移植到Qt的,你應該閱讀本教程(如果你還沒有讀它) - http://doc.qt.digia.com/solutions/4/qtwinmigrate/winmigrate-walkthrough html的 – sashoalm