Qt에서 신호/슬롯을 학습 중이며 문제가 있음을 발견했습니다. 나는 (QGraphicsView의) QGraphicsScene의 항목을 이동하거나 선택했을 때 호출되는 자체 슬롯을 만들어야합니다.슬롯이 사용되지 않습니다.
하나의 위젯이 있고 그래픽보기와 라벨 인 간단한 앱부터 시작합니다. 내 창에 슬롯을 만들고 QGraphicsScene의 신호에 연결했지만 사용되지는 않았습니다. 내 실수는 어디 갔지? 나는 그것을 확인 RINS probram을 실행할 때, 지금
//MainWindow.h
//as generated by QtCreator, just added one slot to it
...omitted for brevity...
public slots:
void selectedItemChanged(QGraphicsItem * newItem, QgraphicsItem * oldItem);
..omitted for brevity...
//------------------------------------------------------------------
//MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsScene * scene = new QGraphicsScene();
scene->setBackgroundBrush (QBrush(Qt::gray));
ui->graphicsView->setScene (scene);
for(int x = 10; x < 250; x+=20)
{
QGraphicsEllipseItem * item = scene->addEllipse (x,x,5,5,QPen(Qt::darkGreen),QBrush(Qt::darkGreen));
item->setFlag (QGraphicsItem::ItemIsFocusable,true);
}
QObject::connect (scene,SIGNAL(focusItemChanged),this,SLOT(selectedItemChanged));
}
void MainWindow::selectedItemChanged (QGraphicsItem *newItem, QGraphicsItem *oldItem)
{
qDebug()<<"called";
if(newItem == 0)
{
ui->label->setText ("Není vybrán bod");
}
else
{
ui->label->setText (QString::number (newItem->scenePos().x()) + "," + QString::number (newItem->scenePos().y()));
}
}
,하지만 난 현장에 그려진 원 (타원)에 초점을 설정할 수 없습니다 슬롯을 사용하지 : 여기
는 코드입니다. IsSelectable 플래그를 설정하려고했지만 도움이되지 않습니다. 이 문제를 해결하기위한 다른 방법이 있습니까?
전체 서명을 사용해 보셨습니까? 'void QGraphicsScene :: focusItemChanged (QGraphicsItem * newFocus, QGraphicsItem * oldFocus, Qt :: FocusReason 이유)' –
http://stackoverflow.com/questions/26422154/code-compiles-by-slot-is-not-invoked-called -used-worked-executed는 아마 당신을 도울 것입니다. – Silicomancer
그래, 고마워. 귀하의 대답은 도움이되었습니다. 내 실수는 훨씬 기본적인 수준 이었지만. SLOT/SIGNAL에 함수 시그니처에 대한 비트를 추가 할 수 있습니다. – mishan