我做了一個名爲類mywindow的,從QWidget的繼承創建一個窗口。下面是mywindow.h的內容:認沽論點的Qt
class MyWindow: public QWidget{
public:
MyWindow(QString title,QString icon,int w = 600,int h = 400);
int getWidth() const;
int getHeight() const;
public slots:
void openDialogBox(QString title,QString message);
private:
int m_width;
int m_height;
};
有一個openDialogBox槽這需要的標題和對話框作爲參數的消息。
我做了一個菜單欄基本上是這樣的:
MyWindow myWindow("Example window",QCoreApplication::applicationDirPath() + "/icon.png");
QMenuBar menuBar(&myWindow);
menuBar.setGeometry(0,0,myWindow.getWidth(),menuBar.geometry().height());
QMenu *fileMenu = new QMenu("&File");
QAction *fileMenu_open = fileMenu->addAction("&Open");
MyWindow::connect(fileMenu_open,&QAction::triggered,&myWindow,&MyWindow::openDialogBox);
在最後一行,我想送參數插槽&MyWindow::openDialogBox
。我試圖做的:
MyWindow::connect(fileMenu_open,&QAction::triggered,&myWindow,&MyWindow::openDialogBox("Title","Hello, this is a message"));
,但它沒有工作(我不需要你解釋爲什麼它沒有工作,我已經知道爲什麼)。如何正確執行此操作以使其正常工作?
* QWeakPointer對象只能通過從QSharedPointer分配來創建。*,見[這裏](https://doc.qt.io/qt-5/qweakpointer.html#details)。 'myWindow'不是'QSharedPointer'。 – Mike
如果你擔心'myWindow'被複制或移動,然後'QObject's [不能](https://doc.qt.io/qt-5/qobject.html#no-copy-constructor-or-賦值運算符)複製。如果擔心'myWindow'是一個懸掛指針(如果被破壞),那麼當'context'對象被銷燬時連接會自動斷開連接,請參閱[here](https://doc.qt.io/qt -5/qobject.html#connect-5),並且回答中的上下文對象是'&myWindow'。我看不出在這裏嘗試使用'QWeakPointer'的任何一點。 – Mike
是的,我的意思是QPointer。而你的鏈接只是說QObject不能被複制,不能移動。 –