С задачей разобрался, процесс перестал создавать/удалять, использую ->kill(), а потом ->start() для другого IP.
Решил вообще не использовать поток отдельный, а проверять айпи и переходить к следующему по timeOut у QTimer'а.
Спасибо всем за помощь
Возникла другая проблема теперь, но отдельную тему создавать не хочется для этого.
В классах своих создавал графические элементы динамически, а сейчас переделал и создал .ui для каждого класса.
По каким-то причинам не работает show() с объектом класса, для которого задан .ui.
Нужно внутри класса, из слота его, вызывать show(), пробовал и open() и this->show()/open(), даже извне пробовал show() вызывать - всё равно не отображается.
В чём может быть причина? В гугле ничего найти не удалось.
Сам объект(хотя так во всех объектах, переделанных с помощью добавления GUI-класса).
// ========== h
class ipSetWindow : public QDialog
{
Q_OBJECT
public:
ipSetWindow(bool gateway = false, QWidget *parent = 0);
~ipSetWindow();
public slots:
void modifyItem(QTreeWidgetItem *item, int column = 0);
private slots:
void sendIP();
void sendName();
void closeDialog();
private:
bool validate(QString &text); //Удаляет лишние нули и проверяет правильность айпишника (1-255.0-255.0-255.0-255), возвращает true, если всё ОК
QString *adress;
QTreeWidgetItem *pItem;
Ui::ipSetWindow ui;
};
//========== cpp
ipSetWindow::ipSetWindow(bool gateway, QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
pItem = 0;
adress = new QString;
ui.ipEdit->setInputMask("000.000.000.000;_");
ui.nameEdit->hide();
ui.okButton->hide();
connect(ui.nextButton, SIGNAL(clicked()), this, SLOT(sendIP()));
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(closeDialog()));
connect(ui.okButton,SIGNAL(clicked()), this, SLOT(sendName()));
setFixedSize(sizeHint());
}
ipSetWindow::~ipSetWindow()
{
delete adress;
}
void ipSetWindow::closeDialog()
{
ui.ipEdit->clear();
ui.nameEdit->clear();
pItem = 0;
close();
}
void ipSetWindow::modifyItem(QTreeWidgetItem *item, int column)
{
ui.ipEdit->setText(item->text(0));
ui.nameEdit->setText(item->text(1));
pItem = item;
show();
}