Имеем такой виджет.
Сверху находится надпись1, чуть ниже прогресс бар, Ещё ниже лист с 5-ю значениями, которые checkable, и ниже всего этого безобразия кнопка "выполнить". При нажатии на кнопку, в надпись1 появляется значение из листа, которое было checked ну и прогресс бар ползёт, выполняется и переходит на следующую выделенную надпись и так до конца.(вроди нормально объяснил) Ну то есть как при любой установке.
Что я делаю.
Связываю кнопку с таймером, тамер со слотом который делает простую иттерацию, иттеративное значение с прогрусс баром.
Так вот, я пытаюсь использовать только один счётчик(не знаю верно или нет).
На иттеративную функцию вещаю условие, что если какое либо из из значений листа включенно, нужная надпись в надпись1, становится видимой, а по загрузке прогрусс бара так же становится невидимой(тут уже совсем не понятно, кодом дополню)
Проблем по моиму тут тьма, но самая явная, то что счётчик запускается в любом случае при нажатии кнопки, даже если выделенных элементов нет. ПРи попытке же выделить эти элементы сразу начинается загрузка прогресс бара, без нажатия кнопки. Пробывал вещать ограничения на счётчик, что он работает только при наличии включенных элементов, но н выходит((
Код
.h
public:
Prep(QWidget *parent =0);
QTimer *timer;
QListWidgetItem *ListItem;
QListWidgetItem *ListItem1;
QListWidgetItem *ListItem2;
QListWidgetItem *ListItem3;
QListWidgetItem *ListItem4;
int as;
private:
int A;
public slots:
void plus1();
void itemClicked(QTreeWidgetItem *item, int column);
signals:
void counterChanged(int);
.cpp
setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
QLCDNumber *lcd = new QLCDNumber(2);
lcd->show();
timer = new QTimer(this);
A=0;
timer->setInterval(35);
as=0;
progressBar->setValue(as);
label_15->hide();
label_16->hide();
label_17->hide();
label_18->hide();
connect(timer, SIGNAL(timeout()), this, SLOT(plus1()));
connect(this, SIGNAL(counterChanged(int)),
progressBar, SLOT(setValue(int)));
connect(this, SIGNAL(counterChanged(int)),
lcd, SLOT(display(int)));
QTreeWidgetItem *TreeItem = new QTreeWidgetItem(treeWidget);
TreeItem->setText(0, tr("Станция"));
TreeItem->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem1 = new QTreeWidgetItem(TreeItem);
TreeItem1->setText(0, tr("РП-330Б-РМ1(1)"));
TreeItem1->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem2 = new QTreeWidgetItem(TreeItem);
TreeItem2->setText(0, tr("РП-330Б-РМ1(2)"));
TreeItem2->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem3 = new QTreeWidgetItem(TreeItem);
TreeItem3->setText(0, tr("АП ДС1.2"));
TreeItem3->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem4 = new QTreeWidgetItem(TreeItem);
TreeItem4->setText(0, tr("УС14.1"));
TreeItem4->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem5 = new QTreeWidgetItem(TreeItem);
TreeItem5->setText(0, tr("КС-100"));
TreeItem5->setIcon(0, QIcon(":/images/gray.bmp"));
QTreeWidgetItem *TreeItem6 = new QTreeWidgetItem(TreeItem);
TreeItem6->setText(0, tr("AR5000"));
TreeItem6->setIcon(0, QIcon(":/images/gray.bmp"));
connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
tab, SLOT(showNormal()));
ListItem = new QListWidgetItem(listWidget_5);
ListItem->setText(tr("Загрузить"));
ListItem->setCheckState(Qt::Unchecked);
ListItem1 = new QListWidgetItem(listWidget_5);
ListItem1->setText(tr("Калибровать"));
ListItem1->setCheckState(Qt::Unchecked);
ListItem2 = new QListWidgetItem(listWidget_5);
ListItem2->setText(tr("Загрузить блок БВ-УПСБ"));
ListItem2->setCheckState(Qt::Unchecked);
ListItem3 = new QListWidgetItem(listWidget_5);
ListItem3->setText(tr("Провести тест"));
ListItem3->setCheckState(Qt::Unchecked);
ListItem4 = new QListWidgetItem(listWidget_5);
ListItem4->setText(tr("Включить в конфиг"));
ListItem4->setCheckState(Qt::Unchecked);
if((ListItem->checkState()==Qt::Checked))// || (ListItem1->checkState()==Qt::Checked) || (ListItem2->checkState()==Qt::Checked) || (ListItem3->checkState()==Qt::Checked) || (ListItem4->checkState()==Qt::Checked))
{
// connect(pushButton, SIGNAL(clicked()),
// timer, SLOT(start()));
}
}
void Prep::plus1()
{
if(as==99)
{
if (A==1)
{
as=0;
emit counterChanged(as);
label_16->hide();
ListItem->setCheckState(Qt::Unchecked);
}
if (A==2)
{
as=0;
emit counterChanged(as);
//timer->stop();
label_15->hide();
}
}
else{
if(ListItem->checkState()==Qt::Checked)
{
label_15->show();
emit counterChanged(++as);
A=1;
}
if(ListItem->checkState()==Qt::Checked)
{
label_16->show();
emit counterChanged(++as);
A=2;
}
}
}