C++ QT:动态子按钮不可见
我有一个项目,我想在我的表单中的任何地方动态添加按钮 这是我的标题:C++ QT:动态子按钮不可见,c++,qt,qt4,C++,Qt,Qt4,我有一个项目,我想在我的表单中的任何地方动态添加按钮 这是我的标题: namespace Ui { class frmBedBook; } class frmBedBook : public QWidget { Q_OBJECT public: explicit frmBedBook(QWidget *parent = 0); void mousePressEvent(QMouseEvent *event); ~frmBedBook(); private:
namespace Ui {
class frmBedBook;
}
class frmBedBook : public QWidget
{
Q_OBJECT
public:
explicit frmBedBook(QWidget *parent = 0);
void mousePressEvent(QMouseEvent *event);
~frmBedBook();
private:
Ui::frmBedBook *ui;
QSignalMapper *signalMapper;
QList<QPushButton*> buttonList;
QGridLayout *lyWidget;
QWidget *m_widget;
public slots:
void clicked(int buttonId);
};
问题是按钮已创建,但不可见。我知道这一点,是因为我追踪了m_widget的孩子们,发现了它。我也已经在MousePressEvent函数中重置了布局,但什么也没发生。有谁能帮我解决这个问题吗?你从不显示按钮,所以它们一直隐藏着。使用
QWidget::show()
。这适用于在显示父项后在mousePressEvent
中创建的小部件。在构造函数中创建的按钮应在其父按钮显示时自动显示。您从不显示按钮,因此它们保持隐藏状态。使用QWidget::show()
。这适用于在显示父项后在mousePressEvent
中创建的小部件。在构造函数中创建的按钮应在显示其父按钮时自动显示。如果在窗体构造后添加按钮,则需要在按钮上调用show()
。而且,QCursor::pos()
可能无法提供您想要的职位
您可以使用QMouseEvent
的x()/y()
函数来代替:
void frmBedBook::mousePressEvent(QMouseEvent *event)
{
QPushButton *p;
p = new QPushButton(m_widget);
p->setText("02");
p->setGeometry(event->x(), event->y(), 50, 50);
p->show();
buttonList.append(p);
connect(p, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(p,2);
}
请注意,您需要
#包括
,除非您已经有了它。如果在构建表单后添加了按钮,则需要在按钮上调用show()
。而且,QCursor::pos()
可能无法提供您想要的职位
您可以使用QMouseEvent
的x()/y()
函数来代替:
void frmBedBook::mousePressEvent(QMouseEvent *event)
{
QPushButton *p;
p = new QPushButton(m_widget);
p->setText("02");
p->setGeometry(event->x(), event->y(), 50, 50);
p->show();
buttonList.append(p);
connect(p, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(p,2);
}
请注意,除非您已经有了该功能,否则您需要
#包括。它非常有效,非常感谢您的帮助。它非常有效,非常感谢您的帮助。