首先,我對很大的問題表示歉意,但事實並非如此。我在讀預科的Qt開發的書,並在閱讀第四章筆者通過展示這個例子告訴MDI窗口的基礎知識:MDI窗口和QSignalMapper基礎知識
MdiWindow::MdiWindow(QWidget *parent) : QMainWindow(parent) {
setWindowTitle(tr("MDI"));
QWorkspace* workspace = new QWorkspace;
setCentralWidget(workspace);
connect(workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(enableActions()));
QSignalMapper* mapper = new QSignalMapper(this);
//my problem is in this line
connect(mapper, SIGNAL(mapped(QWidget*)), workspace, SLOT(setActiveWindow(QWidget*)));
createActions();
createMenus();
createToolbars();
statusBar()->showMessage(tr("Done"));
enableActions();
}
他對這個解釋完全躲避我(是我或其他人有問題的認識它也是如何呢?):
接下來,創建一個名爲QSignalMapper的信號映射對象並連接到 。信號映射器用於將信號源與另一個信號的參數聯繫起來。在本例中,窗口菜單中與每個窗口對應的菜單項目 的動作與 實際文檔窗口相關聯。這些動作又與映射器相關聯。 當動作發出觸發信號時,發送動作 已與相應文檔 窗口的QWidget *相關聯。該指針用作信號映射對象發射的映射(QWidget *) 信號中的參數。
我的問題:我還是不明白什麼是信號映射器類,它是如何使用的,什麼是功能,它做在上面的例子?任何人都可以用簡單的術語解釋上述段落嗎?如果你可以用簡單的例子教我關於mapper類的基礎知識,那麼它會很棒!可能是通俗的說法?我們有MDI窗口,做菜單改變(儘管動作被禁用/啓用),例如假設對於一個特定的文檔,我們有菜單「File/close」,對於其他文檔我們有「File/remaper「?
你能對你最後的「附言:」詳細點嗎?我沒有得到你那個段落中的問題。 –
對於每個Qt問題,[Qt的優秀文檔](http://qt-project.org/doc/qt-4.8/qsignalmapper.html)通常是最好的起點。 –