如何点击QGraphicsTextItem?

时间:2014-07-04 14:02:43

标签: qt flags qgraphicstextitem

我有一个QDialog用于开始我的游戏。在这个课程中,我有一个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 个答案:

答案 0 :(得分:1)

不太确定您是否需要将文字项目设为可编辑的" - 见米奇的评论......

您似乎需要将您的商品设为"可点击" - 然后你需要的只是一些旗帜:

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