2014-07-04 1 views
2

나는 내 게임의 시작 부분에 QDialog을 가지고 있습니다.이 수업에는 QGraphicsTextItem이 있습니다. 나는 그것을 클릭 할 수 있기를 원한다. 사용자가 놀이 게임 시작을 클릭했을 때. 나는이 일을하지만 일하지 않습니다. 당신이 "편집"으로 텍스트 항목을 필요QGraphicsTextItem을 클릭하는 방법?

class Mydialog_start:public QDialog 
{ 
    Q_OBJECT 
    public: 
    explicit Mydialog_start(QWidget *parent = 0); 
    signals: 
    public slots: 
    void on_play_clicked(); 
    void on_exit_clicked(); 
    private: 
    QGraphicsScene* scene; 
    QGraphicsView* view; 
    QPixmap image; 
    QBrush brush; 
    QGraphicsTextItem* text; 
    QFont font; 
    const int x_size; 
    const int y_size; 
}; 
Mydialog_start::Mydialog_start(QWidget *parent) : 
QDialog(parent),x_size(400),y_size(400) 
{ 
    scene=new QGraphicsScene(this); 
    view=new QGraphicsView(this); 
    view->setScene(scene); 
    scene->setSceneRect(0,0,x_size,y_size); 
    image.load(":picture/image/background.jpg"); 
    image=image.scaled(x_size,y_size); 
    brush.setTexture(image); 
    scene->setBackgroundBrush(brush); 
    font.setBold(true); 
    font.setPointSize(40); 
    font.setItalic(true); 
    text=scene->addText("play",font); 
    text->setDefaultTextColor(QColor("red")); 
    text->setPos(100,300); 
    this->setFixedSize(400,400); 
    connect(text,SIGNAL(linkActivated(QString("play"))),this,SLOT(on_play_clicked())); 
} 
void Mydialog_start::on_play_clicked() 
{ 
    accept(); 
} 
void Mydialog_start::on_exit_clicked() 
{ 
    reject(); 
} 
int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    Mydialog_start dialog; 
    dialog.exec(); 
    if(dialog.exec()==QDialog::Accepted) 
    { 
    w.show(); 
    } 
    else 
    { 
    w.close(); 
    } 
} 
+1

게시하기 전에 전혀 검색 했습니까? 정확히 같은 제목의 질문이 있다고 말했을 때 나는 그것을 고치기 위해 실제로 제목을 편집 해 보았습니다. http://stackoverflow.com/questions/3624733/how-to-make-a-qgraphicstextitem-clickable – Mitch

+0

전에 읽었습니다. 그러나 그의 문제는 내 문제와 다릅니다. 그건 내 대답이 아니었다 !! – sarina

+1

그래서'text-> setTextInteractionFlags (Qt :: TextBrowserInteraction);'를 추가하면 작동하지 않습니까? – Mitch

답변

1

아주 확실하지 여부 - 미치의 의견을 참조 ...

당신이 "클릭"으로 항목을해야 할 것 같다 - 모든 당신은 필요 일부 깃발 :

text->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);