在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