Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проецирование изображения, Проецирование изображения 
:(
    Опции темы
unixman
Дата 10.10.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Есть некоторое диалоговое окно. В него выводится всякая информация. Причём информация вся в окно не помещается. Можно ли как то делать проецирование только части информации  в окно?
PM MAIL   Вверх
bsa
Дата 10.10.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Какое API?
PM   Вверх
unixman
Дата 10.10.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Всё пишется на QT
Если полностью то задача такова
Есть Диалоговое окно
В нём С помощью лайоутов создаётся  разветвлённая анкета. То есть получается лайоуты вложены в лайотуты.
Размер окна врезультате получается огромный(если большая анкета)
Хотелось бы сделать прокрутку, но стандартный скролл поддерживает тока элементы, унаследованные от QWidget, а от QLayout не поддерживает
Вот и приходится писать свою прокрутку, хочется её сделать более бустрой. Перерисовка окна занимает достаточно много времени
PM MAIL   Вверх
dmiceman
Дата 11.10.2006, 03:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 9.9.2006

Репутация: нет
Всего: нет



QScrollArea ?
PM MAIL   Вверх
unixman
Дата 11.10.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



QScrollArea вроде тока в 4 QT появился?
Я на 3 писал
PM MAIL   Вверх
powerfox
Дата 11.10.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Не совсем понял суть проблемы.

Цитата(unixman @  10.10.2006,  14:49 Найти цитируемый пост)
Хотелось бы сделать прокрутку, но стандартный скролл поддерживает тока элементы, унаследованные от QWidget, а от QLayout не поддерживает

А родительское окно у тебя от чего наследует? QLayout - не виджет!!!


--------------------
user posted image
PM WWW   Вверх
unixman
Дата 12.10.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Родительское окно от QDialog. К нему скролл неудалось подключить. Пробовал. Пробовал Лайоут тоже в QWidget обернуть -- бесполезно
PM MAIL   Вверх
powerfox
Дата 12.10.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Цитата(unixman @  12.10.2006,  09:40 Найти цитируемый пост)
Родительское окно от QDialog. К нему скролл неудалось подключить. Пробовал. Пробовал Лайоут тоже в QWidget обернуть -- бесполезно

Киньте ваш код: 2 дня буду занят, в субботу к вечеру прикручу.


--------------------
user posted image
PM WWW   Вверх
unixman
Дата 13.10.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Код

#include "createank.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qvariant.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qmessagebox.h>
#include <qregexp.h>
#include <qlineedit.h>
#include <qvbuttongroup.h>
#include <qhbuttongroup.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qobjectlist.h>
#include <qvbox.h>
#include <qscrollview.h>
#include <stdio.h>
#include <qcombobox.h>
#include "MainWidget.h"


extern  int IdAnk;
void CreateAnk::dro(char *table,int index,QGridLayout *parent,int *x, int *y, int main_y,QWidget *qo)
{
    QString elem_child;
    MySQLConnect connect;
    char mas[1000];
    char name[100];
    if(TypeOperation==1 || TypeOperation==2)
        sprintf(mas,"select * from %s where id_conteyner = %d",table,index);
    if(TypeOperation==3)
        sprintf(mas,"select id_conteyner,name,cols,rows,child,type,typeank,close_table,open_table,tr,message from %s where id_conteyner = %d and id = %d",table,index,AnkType);
    
    connect.query(mas);
    connect.next_row();
    connect.row_index(mas,8);
    int open_table = atoi(mas);
    int count_cols;
    connect.row_index(mas,2);
    count_cols = atoi(mas);
    count_cols = count_cols==0?1:count_cols;
    int count_rows;
    connect.row_index(mas,3);
    count_rows = atoi(mas);
    count_rows = count_rows==0?1:count_rows;

    QGridLayout *Layout;
    if(open_table==1)
    {

        Layout = new QGridLayout(qo,count_cols,count_rows,5,5);
        parent->addLayout((QLayout*)Layout,*y,*x);
        *x=0;*y=0;
        parent=Layout;
    }
    //выделим первый номер из списка дочерних
    connect.row_index(mas,4);
    QString child=mas;
    int zap_poz = child.find(",");
    if(zap_poz==-1) 
    {
        elem_child=child.left(zap_poz);
        child="";
    }
    else
    {
        elem_child=child.left(zap_poz);
        child = child.right(child.length()-zap_poz-1);
    }
    if(child.isEmpty())
    {//выводим элементы
        
        int answer;
        //получаем ответ
        if(TypeOperation==2)
        {
            MySQLConnect  temp_connect;
            

            sprintf(mas,"select * from answer where id_cont = %s and id_org=%d and typeank= %d",elem_child.ascii(),AnkOrg,AnkType);
            temp_connect.query(mas);
            if(temp_connect.count()>0)
            {
                temp_connect.next_row();
                temp_connect.row_index(mas,2);
                answer = atoi(mas);
            }
            else
            {
                answer = 0;
            }
        }
        
        
        connect.row_index(mas,5);
        int type = atoi(mas);
        if(type==2)
        {

            QLineEdit *le = new QLineEdit(qo,elem_child);
            if(TypeOperation==2)
            {
                sprintf(mas,"%d",answer);
                le->setText(mas);
            }
            parent->addWidget(le,*y,*x);
            if(main_y>=poz && main_y<(poz+COUNT_VIEW))
            {
                le->show();
            }
            else
            {
                le->hide();
            }
        }
        
        if(type==30)//горизонталные радиобатаны
        {
            //тут будут группироваться переключатели
            QHButtonGroup *hgr  = new QHButtonGroup("Chouse",qo);
            connect.row_index(mas,2);
            int count_radio = atoi(mas);
            for(int i=0;i<count_radio;i++)
            {
                
                    MySQLConnect  temp_connect;
                    connect.row_index(mas,10);//message
                    QString temp = mas;
            
                    QStringList list = QStringList::split(",",temp);


                    int name_index = atoi(mas);
                    char mas_temp[1000];
                    sprintf(mas_temp,"select message from message where id = %s",list[i].ascii());
                    temp_connect.query("set Names cp1251;");
                    temp_connect.query(mas_temp);
                    temp_connect.next_row();
                    temp_connect.row_index(mas,0);

            

                    sprintf(name,"%s_%d",elem_child.ascii(),i);
                    QRadioButton *qr = new QRadioButton(QString::fromLocal8Bit(mas),hgr,name);
                    if(i==answer) qr->setChecked(TRUE);
                
                
            }
            parent->addWidget(hgr,*y,*x);            
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                hgr->show();
            }
            else
            {
                hgr->hide();
            }
            //QObject::connect(hgr,SIGNAL(clicked),this,SLOT(RadioClicked(int)));
        }
        
        if(type==4 || type==3)//вертикльные радиобатаны
        {
            //тут будут группироваться переключатели
            QButtonGroup *hgr;
            if(type==4)
            hgr  = new QVButtonGroup("Chouse",qo);
            if(type==3)
            hgr  = new QHButtonGroup("Chouse",qo);
            connect.row_index(mas,2);
            int count_radio = atoi(mas);

            for(int i=0;i<count_radio;i++)
            {
                if(TypeOperation==1 || TypeOperation==2)//заполняем анкету или просмотр
                {
                    MySQLConnect  temp_connect;
                    connect.row_index(mas,10);//message
                    QString temp = mas;
            
                    QStringList list = QStringList::split(",",temp);


                    int name_index = atoi(mas);
                    char mas_temp[1000];
                    sprintf(mas_temp,"select message from message where id = %s",list[i].ascii());
                    temp_connect.query("set Names cp1251;");
                    temp_connect.query(mas_temp);
                    temp_connect.next_row();
                    temp_connect.row_index(mas,0);

                    sprintf(name,"%s_%d",elem_child.ascii(),i);
                    QRadioButton *qr=new QRadioButton(QString::fromLocal8Bit(mas),hgr,name);
                    if(i==answer) qr->setChecked(TRUE);
                }
                if(TypeOperation==3)
                {
                    sprintf(name,"%s_%d_t",elem_child.ascii(),i);
                    QLineEdit *le = new QLineEdit(hgr,name);
                    sprintf(name,"%s_%d",elem_child.ascii(),i);
                    QRadioButton *qr=new QRadioButton("123",hgr,name);

                }
            }

            //выведем свои варианты ответа
            if(TypeOperation==1 || TypeOperation==2)
            {
                connect.row_index(mas,12); //my_count
                for(int j=i;j<i+atoi(mas);j++)
                {
                    sprintf(name,"%s_%d_t",elem_child.ascii(),j);
                
                    QLineEdit *le = new QLineEdit(hgr,name);
                    if(TypeOperation==2)
                    {
                        MySQLConnect  ttemp_connect;
                        int name_index = atoi(elem_child);
                        char mas_temp[1000];
                        sprintf(mas_temp,"select value from answer_message where id_cont = %d and id_org=%d and typeank= %d",name_index,AnkOrg,AnkType);
                        ttemp_connect.query("set Names cp1251;");
                        ttemp_connect.query(mas_temp);
                        ttemp_connect.next_row();
                        ttemp_connect.row_index(mas_temp,0);
                        le->setText(mas_temp);
                    }

                    sprintf(name,"%s_%d",elem_child.ascii(),j);
                    QRadioButton *qr=new QRadioButton("123",hgr,name);
                    if(j==answer) qr->setChecked(TRUE);

                }
            }
            parent->addWidget(hgr,*y,*x);
            
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                hgr->show();
            }
            else
            {
                hgr->hide();
            }            
            //QObject::connect(hgr,SIGNAL(clicked),this,SLOT(RadioClicked(int)));
        }
        if(type==6)//просто текст
        {
            QLabel *lbl = new QLabel(elem_child,qo,elem_child);
            parent->addWidget(lbl,*y,*x);
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                lbl->show();
            }
            else
            {
                lbl->hide();
            }
        }

        if(type==5)//чекбоксы
        {
            if(TypeOperation==1 || TypeOperation==2)
                connect.row_index(mas,13);
            if(TypeOperation==3) strcpy(mas,"1");
            if(atoi(mas)==1)
            {
                QHButtonGroup *hgr  = new QHButtonGroup("",qo);
                sprintf(name,"%s_t",elem_child.ascii());
                QLineEdit *le = new QLineEdit(hgr,name);
                
                if(TypeOperation==2)
                {
                    MySQLConnect  temp_connect;
                    int name_index = atoi(elem_child);
                    char mas_temp[1000];
                    sprintf(mas_temp,"select value from answer_message where id_cont = %d and id_org=%d and typeank= %d",name_index,AnkOrg,AnkType);
                    temp_connect.query("set Names cp1251;");
                    temp_connect.query(mas_temp);
                    temp_connect.next_row();
                    temp_connect.row_index(mas,0);

                    le->setText(mas);
                }
                
                sprintf(name,"%s",elem_child.ascii());
                QCheckBox *chb = new QCheckBox("",hgr,name);
                if(answer) chb->setChecked(TRUE);
                parent->addWidget(hgr,*y,*x);
                if(main_y>=poz && main_y<poz+COUNT_VIEW)
                {
                    hgr->show();
                }
                else
                {
                    hgr->hide();
                }
            }
            else
            {
                MySQLConnect  temp_connect;
                connect.row_index(mas,10);//message
                int name_index = atoi(mas);
                char mas_temp[1000];
                sprintf(mas_temp,"select message from message where id = %d",name_index);
                temp_connect.query("set Names cp1251;");
                temp_connect.query(mas_temp);
                temp_connect.next_row();
                temp_connect.row_index(mas,0);
                
                QCheckBox *chb = new QCheckBox(QString::fromLocal8Bit(mas),qo,elem_child);
                if(answer) chb->setChecked(TRUE);
                parent->addWidget(chb,*y,*x);
                if(main_y>=poz && main_y<poz+COUNT_VIEW)
                {
                    chb->show();
                }
                else
                {
                    chb->hide();
                }
            }

        }

        if(type==8)
        {
            QLineEdit *le = new QLineEdit(qo,elem_child);
            parent->addWidget(le,*y,*x);
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                le->show();
            }
            else
            {
                le->hide();
            }
        }
            (*x)++;
            elem_child="";
    }

    while(!elem_child.isEmpty())
    {
        dro(table,elem_child.toInt(),Layout,x,y,main_y,qo);
        zap_poz = child.find(",");
        elem_child=child.left(zap_poz);
        child = child.right(child.length()-zap_poz-1);
        if(child=="0") child="";
        
    }

    connect.row_index(mas,9);
    int tr = atoi(mas);
    if(tr == 1)
    {
        (*y)++;
        (*x)=0;
    }




}

CreateAnk::CreateAnk(char *_table,int Org,int type, int typeank,int _count_view,int _poz, QWidget* parent,  const char* name, bool modal, WFlags fl )
    : QDialog( parent, name, modal, fl )
{
    AnkType=typeank;
    COUNT_VIEW = _count_view;
    TypeOperation = type;
    poz=_poz;
    AnkOrg=Org;
    strcpy(table,_table);
    if ( !name )
    setName( "CreateAnk" );
    setGeometry(5,5,100,100);
    //resize( 515, 285 ); 

    //setMinimumSize( 200, 120 );
    //setMaximumSize( 200, 120 );
    setFixedSize(600,600);
    setProperty( "caption", tr( "CreateAnk" ) );
    setProperty( "sizeGripEnabled", QVariant( TRUE, 0 ) );


    
    DrawAnk();
    
    // signals and slots connections
}

/*  
 *  Destroys the object and frees any allocated resources
 */
CreateAnk::~CreateAnk()
{
    // no need to delete child widgets, Qt does it all for us
}


void CreateAnk::DrawAnk()
{
    MySQLConnect *connect = new MySQLConnect;
    connect->query("set Names cp1251;");
    //получаем вопросы, относящиеся к данному типу анкеты
    char mas[1000];
    char mas_name[100];
    int index=AnkType;
    if(TypeOperation==1 || TypeOperation==2)//это случай просмотра и создания анкеты. необходимо выбирать номера вопросов
    {
        sprintf(mas,"select * from typeank_in where id=%d ;",index);//формируем запрос
        connect->query(mas);
        if(connect->error==1) QMessageBox::about(this,"Error","can not select question for anket");

        connect->next_row();
        connect->row_index(mas,1);
        QString str = mas;
        QStringList list = QStringList::split(",",str);
        str  = "select * from cont where id_conteyner in (";
        for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 
        {
            str.append(*it);
            str.append(",");
        }

        str.remove(str.length()-1,1);

        str.append(") order by number");

        connect->query(str.ascii());
    }
    if(TypeOperation==3)
    {
        sprintf(mas,"select id_conteyner,name from template where id = %d ",AnkType);
        connect->query(mas);
    }
        if(connect->error==1) QMessageBox::about(this,"Error","can not select question");
        x=0; y =0;
    
    
        CountQuestion = connect->count();

    x=0; y =0;
    MainLayout = new QGridLayout(this,connect->count(),2,0,0);//создаётся главный лайоут, в него в функции dro напихивается ещё куча таких. ВОт его и нужно прикрутить к прокрутке
    MainLayout->setResizeMode(QLayout::Minimum);
    //MainLayout->setResizeMode(QLayout::Minimum);
    //poz =;
    int main_y=0;

    while (connect->next_row()) 
    {
        //вывели название вопроса
        connect->row_index(mas,1);
        if(TypeOperation == 1 || TypeOperation==2)
        {
            sprintf(mas_name,"%d_l",main_y);
            QLabel *lbl = new QLabel(QString::fromLocal8Bit(mas),this,mas_name);
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                lbl->show();
            }
            else
            {
                lbl->hide();
            }
            MainLayout->addWidget(lbl,main_y,x);
        }
        if(TypeOperation == 3)
        {
            MainEdit = new QLineEdit(this,"MainEdit");
            if(main_y>=poz && main_y<poz+COUNT_VIEW)
            {
                MainEdit->show();
            }
            else
            {
                MainEdit->hide();
            }
            MainLayout->addWidget(MainEdit,main_y,x);
        }



        x++;
        //определим индекс вопроса
        connect->row_index(mas,0);
        int index;
        index = atoi(mas);
        y=main_y;
        dro(table,index,MainLayout,&x,&y,main_y,this);
        x=0;
        main_y++;

    }

//QMessageBox::about(this,"Error",str);
    save = new QPushButton("Save",this);    
    MainLayout->addWidget(save,main_y,0);

    QGridLayout *Layout;
    Layout = new QGridLayout(this,1,2,5,5);

    
    next = new QPushButton("Next",this);    
    pred = new QPushButton("Pred",this);
    Layout->addWidget(pred,0,0);
    Layout->addWidget(next,0,1);
    

    MainLayout->addLayout((QLayout*)Layout,main_y,1);


    QObject::connect(save,SIGNAL(clicked()),this,SLOT(Save()));
    QObject::connect(next,SIGNAL(clicked()),this,SLOT(NextSlot()));
    QObject::connect(pred,SIGNAL(clicked()),this,SLOT(PredSlot()));

    if(TypeOperation == 1)
    {
        sprintf(mas,"insert into ank values(%d,%d,'2006-10-06');",AnkOrg, AnkType);
        connect->query(mas);
    }

}

Суть кода такова. Имеется Лайоут, в него помещается много виджетов. Для форматирования эти же виджеты помещаются в лайоуты. И вот всё это дело надо прокрутить.

Пока я сделал так. Я вывожу всё что есть, а потом hide делаю для тех элементов, которые не влазят . Потом при прокрутке увеличиваю текущую позицию, показываю предыдущие элементы и прячу опять не нужные. Программа при этом тормозит конкретно, окно перерисовывается дай боже.
Весь код выложить не могу. Он очень большой.
Просто вообще было бы интересно узнать, как сделать прокрутку Layout. В нете ничё не нашёл на эту тему. Вопрос такой ставили куча людей, а ответа на него не нашёл.
Пишется всё на Qt3.

Спасибо за поддержку.
PM MAIL   Вверх
powerfox
Дата 14.10.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Код пока не смотрел, вот как надо делать прокрутку для QLayout: лпределяем виджет (наследник QWidget или QMainWindow), там определяем все кнопки, в конструкторе компануем эти кнопки, как нам надо. В ф-ии main (или где нам удобо это сделать) определяем QScrollView, делаем его главным виджетом, а наш - дочерним виджету QScrollView. В документации есть много всего по QScrollView.
Вот пример программки.

main.cpp:
Код

#include <qapplication.h>
#include <qscrollview.h>
#include "finddialog.h"

int main(int argc,char *argv[])
{
 QApplication app(argc,argv);
 QScrollView scrollview;
 scrollview.setCaption(QObject::tr("Scroll this window"));
 app.setMainWidget(&scrollview);
 FindDialog *dialog = new FindDialog;
 scrollview.addChild(dialog);
 scrollview.show();
 return app.exec();
}


finddialog.h:
Код

#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <qdialog.h>
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class FindDialog : public QDialog
{
    Q_OBJECT
public:
    FindDialog(QWidget *parent = 0, const char* name = 0);
signals:
    void findNext(const QString &str, bool caseSensitive);
    void findPrev(const QString &str, bool caseSensitive);
private slots:
    void findClicked();
    void enableFindButton(const QString &text);
private:
    QLabel *label;
    QLineEdit *lineEdit;
    QCheckBox *caseCheckBox;
    QCheckBox *backwardCheckBox;
    QPushButton *findButton;
    QPushButton *closeButton;

    QLabel *label2;
    QLineEdit *lineEdit2;
    QCheckBox *caseCheckBox2;
    QCheckBox *backwardCheckBox2;
    QPushButton *findButton2;
    QPushButton *closeButton2;

    QLabel *label3;
    QLineEdit *lineEdit3;
    QCheckBox *caseCheckBox3;
    QCheckBox *backwardCheckBox3;
    QPushButton *findButton3;
    QPushButton *closeButton3;

    QLabel *label4;
    QLineEdit *lineEdit4;
    QCheckBox *caseCheckBox4;
    QCheckBox *backwardCheckBox4;
    QPushButton *findButton4;
    QPushButton *closeButton4;
};
#endif



finddialog.cpp
Код

#include <qcheckbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include "finddialog.h"


FindDialog::FindDialog(QWidget *parent,const char *name)
    :QDialog(parent,name)
{
 setCaption(tr("Find"));
 label = new QLabel(tr("Find &what"),this);
 lineEdit= new QLineEdit(this);
 label->setBuddy(lineEdit);
 caseCheckBox = new QCheckBox(tr("Match &case"),this);
 backwardCheckBox = new QCheckBox(tr("Search &backward"),this);
 findButton = new QPushButton(tr("Search &backward"), this);
 findButton->setDefault(true);
 findButton->setEnabled(false);
 closeButton = new QPushButton(tr("Close"),this);

 label2 = new QLabel(tr("Find &what"),this);
 lineEdit2= new QLineEdit(this);
 label2->setBuddy(lineEdit);
 caseCheckBox2 = new QCheckBox(tr("Match &case"),this);
 backwardCheckBox2 = new QCheckBox(tr("Search &backward"),this);
 findButton2 = new QPushButton(tr("Search &backward"), this);
 findButton2->setDefault(true);
 findButton2->setEnabled(false);
 closeButton2 = new QPushButton(tr("Close"),this);

 label3 = new QLabel(tr("Find &what"),this);
 lineEdit3= new QLineEdit(this);
 label3->setBuddy(lineEdit);
 caseCheckBox3 = new QCheckBox(tr("Match &case"),this);
 backwardCheckBox3 = new QCheckBox(tr("Search &backward"),this);
 findButton3 = new QPushButton(tr("Search &backward"), this);
 findButton3->setDefault(true);
 findButton3->setEnabled(false);
 closeButton3 = new QPushButton(tr("Close"),this);

 label4 = new QLabel(tr("Find &what"),this);
 lineEdit4= new QLineEdit(this);
 label4->setBuddy(lineEdit);
 caseCheckBox4 = new QCheckBox(tr("Match &case"),this);
 backwardCheckBox4 = new QCheckBox(tr("Search &backward"),this);
 findButton4 = new QPushButton(tr("Search &backward"), this);
 findButton4->setDefault(true);
 findButton4->setEnabled(false);
 closeButton4 = new QPushButton(tr("Close"),this);
 
 connect(lineEdit, SIGNAL(textChanged(const QString &)), 
         this, SLOT(enableFindButton(const QString &)));
 connect(findButton, SIGNAL(clicked()),
          this, SLOT(findClicked()));
 connect(closeButton, SIGNAL(clicked()),
      this, SLOT(close()));


 //1
 QHBoxLayout *topLeftLayout = new QHBoxLayout;
 topLeftLayout->addWidget(label);
 topLeftLayout->addWidget(lineEdit);
 
 QVBoxLayout *leftLayout = new QVBoxLayout;
 leftLayout->addLayout(topLeftLayout);
 leftLayout->addWidget(caseCheckBox);
 leftLayout->addWidget(backwardCheckBox);
 
 QVBoxLayout *rightLayout = new QVBoxLayout;
 rightLayout->addWidget(findButton);
 rightLayout->addWidget(closeButton);
 rightLayout->addStretch(1);
 
 QHBoxLayout *mainLayout1 = new QHBoxLayout;
 mainLayout1->setMargin(11);
 mainLayout1->addLayout(leftLayout);
 mainLayout1->addLayout(rightLayout);


 //2
 QHBoxLayout *topLeftLayout2 = new QHBoxLayout;
 topLeftLayout2->addWidget(label2);
 topLeftLayout2->addWidget(lineEdit2);
 
 QVBoxLayout *leftLayout2 = new QVBoxLayout;
 leftLayout2->addLayout(topLeftLayout2);
 leftLayout2->addWidget(caseCheckBox2);
 leftLayout2->addWidget(backwardCheckBox2);
 
 QVBoxLayout *rightLayout2 = new QVBoxLayout;
 rightLayout2->addWidget(findButton2);
 rightLayout2->addWidget(closeButton2);
 rightLayout2->addStretch(1);
 
 QHBoxLayout *mainLayout2 = new QHBoxLayout;
 mainLayout2->setMargin(11);
 mainLayout2->addLayout(leftLayout2);
 mainLayout2->addLayout(rightLayout2);


 //3
 QHBoxLayout *topLeftLayout3 = new QHBoxLayout;
 topLeftLayout3->addWidget(label3);
 topLeftLayout3->addWidget(lineEdit3);
 
 QVBoxLayout *leftLayout3 = new QVBoxLayout;
 leftLayout3->addLayout(topLeftLayout3);
 leftLayout3->addWidget(caseCheckBox3);
 leftLayout3->addWidget(backwardCheckBox3);
 
 QVBoxLayout *rightLayout3 = new QVBoxLayout;
 rightLayout3->addWidget(findButton3);
 rightLayout3->addWidget(closeButton3);
 rightLayout3->addStretch(1);
 
 QHBoxLayout *mainLayout3 = new QHBoxLayout;
 mainLayout3->setMargin(11);
 mainLayout3->addLayout(leftLayout3);
 mainLayout3->addLayout(rightLayout3);

 
 //4
 QHBoxLayout *topLeftLayout4 = new QHBoxLayout;
 topLeftLayout4->addWidget(label4);
 topLeftLayout4->addWidget(lineEdit4);
 
 QVBoxLayout *leftLayout4 = new QVBoxLayout;
 leftLayout3->addLayout(topLeftLayout4);
 leftLayout3->addWidget(caseCheckBox4);
 leftLayout3->addWidget(backwardCheckBox4);

 QVBoxLayout *rightLayout4 = new QVBoxLayout;
 rightLayout4->addWidget(findButton4);
 rightLayout4->addWidget(closeButton4);
 rightLayout4->addStretch(1);

 QHBoxLayout *mainLayout4 = new QHBoxLayout;
 mainLayout4->setMargin(11);
 mainLayout4->addLayout(leftLayout4);
 mainLayout4->addLayout(rightLayout4);

 QVBoxLayout *mainLayout = new QVBoxLayout(this);
 mainLayout->setMargin(11);
 mainLayout->addLayout(mainLayout1);
 mainLayout->addLayout(mainLayout2);
 mainLayout->addLayout(mainLayout3);
 mainLayout->addLayout(mainLayout4);


}

void FindDialog::findClicked()
{
 QString text = lineEdit->text();
 bool caseSensitive = caseCheckBox->isOn();
 if(backwardCheckBox->isOn())    
    emit findPrev(text, caseSensitive);
  else
    emit findNext(text, caseSensitive);
}

void FindDialog::enableFindButton(const QString &text)
{
    findButton->setEnabled(!text.isEmpty());
}


В принципе, всё довольно прозрачно.


--------------------
user posted image
PM WWW   Вверх
unixman
Дата 16.10.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Попробовал так и сделать. Создал класс диалог, в нём все элементы и содержатся. Создал QScrollView и у него в качестве дочернего впихнул этот класс. Диалог не создался(((( То есть когда вызываю exec диалог не запускается.
PM MAIL   Вверх
powerfox
Дата 16.10.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Можно весь код? Желательно не листинг, а в архиве.


--------------------
user posted image
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.