我正在尝试在运行时从QPushButton派生的另一个小部件中添加两个QPushButton。当我在创建窗口小部件时这样做时,内部QPushButton显示正常,但是当我尝试修改窗口小部件以使它们显示时,它不起作用。
我尝试使用.show()最多不规则地工作,并直接修改可见性,结果类似。
以下是相关代码:
const QString eleve::baseColor("background-color : #ffffff");
eleve::eleve(const QString & name,QWidget *parent):QPushButton(parent),grade(0),isdead(false){
setFocusPolicy(Qt::NoFocus);
setText(name);
init_Boutton();
setFixedSize(QSize(100,50));
setStyleSheet("background-color: #ffffff;text-align:left;");
}
eleve::eleve(QWidget *parent):QPushButton(parent),grade(0),isdead(true){
setFocusPolicy(Qt::NoFocus);
setText("");
setFixedSize(QSize(100,50));
setStyleSheet("background-color: #ffffff;text-align:left;");
}
void eleve::init_Boutton(){
plus=new QPushButton("+",this);
moins=new QPushButton("-",this);
moins->setFixedSize(30,this->size().height()/2+2);
plus->setFixedSize(30,this->size().height()/2+2);
int xPlus=this->pos().x()+size().width()-plus->size().width();
int xMoins=this->pos().x()+size().width()-moins->size().width();
int yMoins=this->pos().y()+size().height()-moins->size().height();
moins->move(xMoins,yMoins);
plus->move(xPlus,0);
moins->setFocusPolicy(Qt::NoFocus);
plus->setFocusPolicy(Qt::NoFocus);
QObject::connect(plus, SIGNAL(clicked()),this,SLOT(plusFunc()));
QObject::connect(moins, SIGNAL(clicked()),this,SLOT(moinsFunc()));
plus->setStyleSheet("text-align:center;");
moins->setStyleSheet("text-align:center;");
}
void eleve::Die(){
isdead=true;
setName("");
setStyleSheet("background-color:#ffffff");
delete plus;
delete moins;
}
void eleve::Born(const QString name){
isdead=false;
if(name.isEmpty())
AskForName();
else
setText(name);
init_Boutton();
}
void eleve::AskForName(){
setStyleSheet("background-color:#ffffff; text-align:left;");
bool ok = false;
QString tempName=QInputDialog::getText(this, "renommage","Nouveau nom:", QLineEdit::Normal, this->text(), &ok);
if (ok){
if(!tempName.isEmpty()){
//setStyleSheet(tempStyle);
changeColor();
if(isdead)
Born(tempName);
else
setText(tempName);
}
}
}
因此,在使学生活着的构造函数中和在Born函数中调用init_Button,但不会使它们仅出现在Born函数中。
在下面的屏幕截图中,您希望我想在顶部实现,并在底部获得结果(为空)。空的是正常的,因为我没有要求他们出生!