2012-12-16 2 views
0

Qt 프로그래밍을 처음 사용합니다. 내가하고 싶은 것은 내가 추측하는 제목에서 꽤 자명하다. 크리 스 푸시 버튼을 클릭하면 데이터를 QString에 저장하려는 lineEdit가 있습니다. 문제는 위젯이 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 (클릭)() (을)를 buttonClickClick()에 연결하십시오.

  3. 은 이런 구현은 buttonClicked :

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

문제 I 모든 위젯 QGraphicsScene 메인 함수 내에서 생성된다는 것이다. 따라서 mainwindow :: buttonclicked() 또는 dialogue :: buttonclicked()와 같은 것이 없습니다. 또한 QPushButton을 다시 구현하지 않았습니다. b는 객체입니다. b는 기본 QPushButton이므로 언급 한대로이 함수를 구현할 수있는 'MyWidget'이 없습니다. void MyWidget :: buttonClicked() { const QString text = m_lineEdit-> text(); // "text"로 무언가를하십시오 } –

+0

clicked()에 연결할 수 있고 LineEdit과 그 처리 방법을 알고있는 QObject가 필요합니다. 기존 신호를 기존 슬롯에 연결하는 것보다 더 많은 사용자 지정 방식으로 신호에 반응하려면 슬롯을 정의하는 것 외에 다른 방법은 없으며 QObject/QWidget 하위 클래스에서만 발생할 수 있습니다. –

+0

감사합니다. 나는이 슬롯과 신호 문제를 해결하기 위해 나 자신의 맞춤 위젯을 만들어야한다고 생각한다. –

관련 문제