2010-06-06 291 views
1

如何通過QGraphicsView繪製交互式小部件,如QButtons和Line Edits? 例如,我在圖像編輯應用程序中選擇了一個圖像區域,該應用程序使用QGraphicsView顯示圖像,並且我想用名稱爲該區域註釋。通過QGraphicsView繪製小部件(如按鈕)

所以我想在這個矩形選擇下面有一個Line編輯和兩個按鈕(Cross和Tick)。 如何繪製這些圖像?

示例代碼將很酷!

回答

2

QGraphicsScene具有功能addWidget()在這裏你可以添加小部件的場景。如果您不想通過場景addWidget功能,您可以創建一個QGraphicsProxyWidget使用setWidget()並將代理小部件添加到您的場景中。

+0

謝謝,那正是我想要的。 – 2010-06-09 16:54:29

2

您可以像添加任何其他控件一樣添加它們。我使用Qt的設計器來生成如下:

class MyForm: public QMainWindow 
{ 
    private: 
     QGraphicsView *graphicsView; 
     QLineEdit *lineEdit; 
     QPushButton *pushButton; 
     QPushButton *pushButton_2; 
    public: 
     MyForm() 
     { 
      graphicsView = new QGraphicsView(this); 
      graphicsView->setObjectName(QString::fromUtf8("graphicsView")); 
      graphicsView->setGeometry(QRect(130, 90, 441, 191)); 
      lineEdit = new QLineEdit(graphicsView); 
      lineEdit->setObjectName(QString::fromUtf8("lineEdit")); 
      lineEdit->setGeometry(QRect(160, 150, 113, 22)); 
      pushButton = new QPushButton(graphicsView); 
      pushButton->setObjectName(QString::fromUtf8("pushButton")); 
      pushButton->setGeometry(QRect(280, 140, 115, 32)); 
      pushButton_2 = new QPushButton(graphicsView); 
      pushButton_2->setObjectName(QString::fromUtf8("pushButton_2")); 
      pushButton_2->setGeometry(QRect(400, 140, 115, 32)); 
     } 
}; 
+1

我看不到佈局 – Phlip 2013-05-10 21:31:37

+0

@Phlip沒有佈局,只有幾何。 http://stackoverflow.com/a/2296040/1090455 – 2016-02-08 15:43:12

+1

that sez「將進度條添加爲您的QWidget的子項,而無需在佈局中添加它。」 Tx - 如果這意味着一個對象 - > addChild(x)或類似的可用。我現在幾乎沒有任何桌面上的Qt項目;經濟繁榮的緊急情況。 – Phlip 2016-02-12 16:29:59