Что у меня есть:
в конструкторе:
connect(openAction, SIGNAL(triggered()), this, SLOT(openCatClicked()));
connect(openAction, SIGNAL(triggered()), this, SLOT(openDogClicked()));
Моя функция
void Widget::openClicked()
{
if( mTableModel->openComp(CAT) == true)
{
mCatWidget = new CatWidget();
mCatWidget->show();
}
else if (mTableModel->openComp(DOG) == false)
{
mDogWidget = new DogWidget();
mDogWidget->show();
}
}
В моделе у меня функция:
bool TableModel::openComponent(Type type)
{
if(type == CAT)
{
return true;
}
if(type == DOG)
{
return false;
}
}
Но у меня оба открываются виджета всегда. Нужна ваша помощь
UPD:
bool Model::openComp(Type type)
{
switch (type)
{
case 0:
return Cat;
case 1:
return DOG;
}
return false;
}
UPD2:
void Widget::openClicked()
{
if( mTableModel->openComp(CAT) == true)
{
mCatWidget = new CatWidget();
mCatWidget->show();
}
else if (mTableModel->openComp(DOG) == false)
{
mDogWidget = new DogWidget();
mDogWidget->show();
}
}
Вы к одному action цепляете 2 слота:
connect(openAction, SIGNAL(triggered()), this, SLOT(openCatClicked()));
connect(openAction, SIGNAL(triggered()), this, SLOT(openDogClicked()));
Т.е. Вы на сигнал triggered
одного openAction
повесили и openCatClicked
, и openDogClicked
. Вот Вам оба диалога и показываются.
Вам наверное нужно делать так: (хотя ваши намерения не очень понятны):
bool Model::openComp(Type type)
{
return type == CAT;
}
void Widget::openClicked(Type t)
{
if( mTableModel->openComp(t) == true)
{
mCatWidget = new CatWidget();
mCatWidget->show();
}
else
{
mDogWidget = new DogWidget();
mDogWidget->show();
}
}
Может быть, что я неверно понимаю что вы пытаетесь делать...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вот ссылка на англойязычную версиюНе могли бы Вы мне помочь, потому что советы на ссылочной версии не помогли: [https://stackoverflow
Подскажите пожалуйстаЕсть файл у меня settings
На вход принимается радиус(целое число)Нужно вычислить сколько точек входит в круг