2012-12-16 47 views
0

我是Qt編程的新手。我想要做的事情非常自我解釋從標題我猜。當點擊一個Creat PushButton時,我有一個lineEdit的數據我想要存儲在一個QString中。問題是上面的小部件是在一個graphicsScene中,所以我沒有 on_pushbutton_clicked(); 功能。在QPushButton單擊時將QLineEdit的數據存儲到QString中

我自己的解決方案的代碼如下,但正如你可能已經猜到,它不工作。

QLineEdit *l = new QLineEdit ; 
QPushButton *b = new QPushButton; 

QGraphicsProxyWidget *line = scene.addWidget(l); 
QGraphicsProxyWidget *button = scene.addWidget(b); 

line->setPos(-600,270); 
button->setPos(-600,310); 
//b->clicked(); 

QString input; 
QString input = l->text(input); 


QObject::connect(b,SIGNAL (clicked()),l, SLOT (setText(QString))); 

任何形式的幫助將不勝感激。

回答

1

我不明白如何把這些小工具放在QGraphicsScene裏面應該有所作爲。

  1. 在你的課堂上保留一個指向QLineEdit「l」的指針,例如,作爲QLineEdit * m_lineEdit。

  2. 將b,SIGNAL(clicked())連接到slot buttonClicked()。

  3. 實現buttonClicked這樣的:

    void MyWidget::buttonClicked() { 
        const QString text = m_lineEdit->text(); 
        //do something with "text" 
    } 
    
+0

的問題是,我所有這些部件和QGraphicsScene在主函數中創建。所以我沒有像mainwindow :: buttonclicked()或dialog :: buttonclicked()這樣的東西。 另外我還沒有重新實現其中b是一個對象的QPushButton。 b是一個默認的QPushButton,所以我沒有一個'MyWidget',我可以像你提到的那樣實現這個功能。 void MyWidget :: buttonClicked(){ const QString text = m_lineEdit-> text(); //用「text」做些什麼 } –

+0

您需要一些可以連接到clicked()的QObject,並且知道LineEdit以及如何處理它。爲了以自定義的方式對信號做出反應,不僅僅是將現有的信號連接到現有的插槽,除了定義插槽之外,沒有別的辦法,只能在QObject/QWidget子類中進行。 –

+0

謝謝。我覺得生病必須創建我自己的自定義小部件來解決這個插槽和信號問題! –

相關問題