找回密码
 立即注册
收起左侧

在GraphicsSence中addwidget,widget中的Qpushbutton无法响应单击事件

6
回复
7148
查看
[复制链接]
累计签到:207 天
连续签到:1 天
来源: 2016-4-29 16:43:33 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 和煦阳光 于 2016-4-30 09:01 编辑

在一个Dialog中创建 一个GraphicsView,在view中创建一个Scene,然后addwidget一个widget,当我在这个widgets中拖入一个QPushbutton后运行发现这个button不能单击,就好像没有enable一样,请问这是哪里的问题呢?

dialog.h
public:
    Graph* m_pmain;
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QDir>

Dialog:ialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui:ialog)
{
    ui->setupUi(this);
    m_pmain = new Graph(this);
    m_pmain->setGeometry(0,25,640,400);
}

Graph.h
class Graph : public QGraphicsView
{
    Q_OBJECT
public:
    explicit Graph(QWidget *parent = 0);
    ~Graph();
}

Graph.cpp
Form1 *qForm1 = new Form1;
m_scene.addWidget(qForm1);
qForm1->setGeometry(0,0,600, 400);

Form1.h
class Form1 : public QWidget
{
    Q_OBJECT

public:
    explicit Form1(QWidget *parent = 0);
    ~Form1();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Form1 *ui;
};







最佳答案

查看完整内容

#include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); view =new QGraphicsView(this); scene = new QGraphicsScene(view); view->setScene(scene); Form1* f1 = new Form1(this); scene->addWidget(f1); } MainWindow::~MainWindow() { delete ui; } Form1::Form1( ...
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2016-4-29 16:43:34 显示全部楼层
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    view =new QGraphicsView(this);
    scene = new QGraphicsScene(view);
    view->setScene(scene);
    Form1* f1 = new Form1(this);
    scene->addWidget(f1);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Form1::Form1(QWidget *parent )Widget(parent)
{
    setFixedSize(50,50);
    bt =new QPushButton(this);
    connect(bt,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));
}
Form1::~Form1()
{

}
void Form1:n_pushButton_clicked()
{
    qDebug()<<"come in slot";
}

已经打印出了 come in slot
回复

使用道具 举报

累计签到:207 天
连续签到:1 天
2016-4-30 21:55:59 显示全部楼层
没有人做过这个吗?就好像button没有enable一样
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2016-5-3 08:35:09 显示全部楼层
你这个叙述不是很清楚,看你贴出来的代码不太对。
回复

使用道具 举报

累计签到:207 天
连续签到:1 天
2016-5-3 15:53:18 显示全部楼层
wdmxtk002 发表于 2016-5-3 08:35
你这个叙述不是很清楚,看你贴出来的代码不太对。

哪里不清楚呢?请指教啊!
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2016-5-4 19:53:48 显示全部楼层
可以的呀,你做  BUTTON的信号 和槽连接了没? GraphicsView 和QGraphicsScene 有没有截获事件?
回复

使用道具 举报

累计签到:207 天
连续签到:1 天
2016-5-13 15:10:39 显示全部楼层
renhm 发表于 2016-5-4 21:40
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include

谢谢你,虽然跟我想的还是有差异,但是从你的思路中还是得到了一些启发!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了