Russian Qt Forum

Qt => Общие вопросы => Тема начата: kadr от Июнь 24, 2009, 17:25



Название: Открытие существующего окна
Отправлено: kadr от Июнь 24, 2009, 17:25
Есть виджет find_list.ui, и главное окно, на котором есть меню, в котором при нажатии на кнопку должно открываться уже созданое окно.
QWidget *widget = new QWidget;
widget->show();
Открывает новый виджет, как сделать так что бы открывался уже существующий виджет find_list.ui  ???


Название: Re: Открытие существующего окна
Отправлено: denka от Июнь 24, 2009, 17:41
О тебе на этот вопрос давали ответ в другом топике. Я так понимаю ты до сих пор не разобрался с темой.
Просьба выложить find_list.ui. Попробуем решить твою проблему :)


Название: Re: Открытие существующего окна
Отправлено: kadr от Июнь 24, 2009, 18:04
нет, так и не разобрался, я конечно нашел как открывать новый виджет, но пока не пойму, как открыть уже существующий виджет! Что конкретно надо выложить?


Название: Re: Открытие существующего окна
Отправлено: denka от Июнь 24, 2009, 18:10
Выложи find_list.ui


Название: Re: Открытие существующего окна
Отправлено: denka от Июнь 24, 2009, 19:30
У тебя должен быть .h файл типа такого

Код:
#include "ui_find_list.h"

class FindList :public QWidget, public Ui::find_list
{
Q_OBJECT
public:
FindList( QWidget * parent = 0, Qt::WindowFlags f = 0 );
};

и .cpp типа такого

Код:
FindList::FindList(QWidget * parent, Qt::WindowFlags f):QWidget(parent, f)
{
setupUi(this);
//...
}


Название: Re: Открытие существующего окна
Отправлено: denka от Июнь 24, 2009, 19:36
Ах да советую посмотреть вот это http://doc.qtsoftware.com/4.5/layout.html (http://doc.qtsoftware.com/4.5/layout.html)


Название: Re: Открытие существующего окна
Отправлено: kadr от Июнь 30, 2009, 20:40
Привет всем, наконец то сделал так что бы у меня открывалось нужное мне окно, только почему то никакие события на нем не обрабатываются,  на форме должен поизводиться поиск из фойла при нажатии на кнопку:

Код
C++ (Qt)
void find_list::on_pushButton_clicked()
{
   QString date_s = m_ui->date_s->text(),date_po,str = m_ui->date_po->text();
   QFile file("tovars.txt");
   QByteArray line;
   QStringList spl;
   int sum = 0,row = 0;
   if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
             return;
while (!file.atEnd())
{
   line = file.readLine();
   line.trimmed();
   str.clear();
   str.append(line);
   str.trimmed();
   spl = str.split("|");
   str = spl.value(2);
   str.trimmed();
   if ((str>=date_s) && (str<=date_po))
   {
       spl.clear();
       str.clear();
       str.append(line);
       spl = str.split("|");
       str.clear();
       str = spl.value(1);
       sum +=str.toInt();
       m_ui->pole->setItem(row,0, new QTableWidgetItem(spl.value(0)));
       m_ui->pole->setItem(row,1, new QTableWidgetItem(spl.value(1)));
       m_ui->pole->setItem(row,2, new QTableWidgetItem(spl.value(2)));
       row++;
   }
}
m_ui->lcd->display(row);
str.clear();
m_ui->itog->setText(str.setNum(sum));

Но почему то ничего не происходит, в чем может быть проблема, подскажите пожалуйста!


Название: Re: Открытие существующего окна
Отправлено: Авварон от Июль 01, 2009, 10:43
вставь qDebug. Что пишет connect?


Название: Re: Открытие существующего окна
Отправлено: mugabe от Июль 01, 2009, 11:14
И есть ли вообще connect?
А если нет, то стоит ли autoconnect?


Название: Re: Открытие существующего окна
Отправлено: kadr от Июль 01, 2009, 16:59
Нет connect не использовал, а зачем, он открывает нужную мне форму, вот только на ней ничего не работает, нажимаю кнопку, должен произойти выбор записей из файла, а ничего не происходит, не реагирует!


Название: Re: Открытие существующего окна
Отправлено: denka от Июль 01, 2009, 17:39
Как у тебя что среагирует если ты не соединил нужный сигнал со слотом?
Сделай on_pushButton_clicked() слотом, если она до сих пор им не является. А перед вызовом show() добавь строку:
Код:
connect(btn, SIGNAL(clicked()), widget, SLOT(on_pushButton_clicked()));

где btn это та кнопка на которую ты жмешь


Название: Re: Открытие существующего окна
Отправлено: kadr от Июль 01, 2009, 18:21
У меня есть три окна, главное, поиск по дате и поиск по параметру, так вот на главном есть меню - называется действие, там есть подпункты поиск по дате и поиск по параметру, так вот при нажатии на любом из них открывается соответствующее окно, на котором расположена форма поиска, и есть кнопка Поиск, при нажатии на которую должно выполнятся вот это:

void find_list::on_pushButton_clicked()
{
    QString date_s = m_ui->date_s->text(),date_po,str = m_ui->date_po->text();
    QFile file("tovars.txt");
    QByteArray line;
    QStringList spl;
    int sum = 0,row = 0;
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QMessageBox::warning(this,"Error","File is not opening",QMessageBox::Ok);
        return;
    }
while (!file.atEnd())
{
    line = file.readLine();
    line.trimmed();
    str.clear();
    str.append(line);
    str.trimmed();
    spl = str.split("|");
    str = spl.value(2);
    str.trimmed();
    QMessageBox::warning(this,str,date_s,QMessageBox::Ok);
    if ((str>=date_s) && (str<=date_po))
    {
        spl.clear();
        str.clear();
        str.append(line);
        spl = str.split("|");
        str.clear();
        str = spl.value(1);
        sum +=str.toInt();
        m_ui->pole->setItem(row,0, new QTableWidgetItem(spl.value(0)));
        m_ui->pole->setItem(row,1, new QTableWidgetItem(spl.value(1)));
        m_ui->pole->setItem(row,2, new QTableWidgetItem(spl.value(2)));
        row++;
    }
}
m_ui->lcd->display(row);
str.clear();
m_ui->itog->setText(str.setNum(sum));
Но ничего не происходит, даже не выводится никакого сообщения QMessageBox::warning(this,str,date_s,QMessageBox::Ok), будто не реагирует, почему не пойму!


Название: Re: Открытие существующего окна
Отправлено: denka от Июль 01, 2009, 18:37
Я ведь тебе написал что тебе надо сделать. Законекть сигнал clicked() со своей кнопки "Поиск" с нужным слотом и все