Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Май 04, 2011, 15:15



Название: QTabWidget
Отправлено: demaker от Май 04, 2011, 15:15
Подскажите пожалуйста, а как можно листать ТАБЫ
Я вот создал три штуки, а вот на следующий попасть не могу :-\
Код
C++ (Qt)
myTab = new QTabWidget(this);
   myWidget = new QWidget;
   myWidget2 = new QWidget;
   myWidget3 = new QWidget;
 
   myLayBoxWidget = new QVBoxLayout;
 
 
 
   myLayBoxWidget->addWidget(myTab);
 
   myTab->addTab(myWidget,QString("MY"));
   myTab->addTab(myWidget2,QString("MY2"));
   myTab->addTab(myWidget3,QString("MY3"));
 
Наверное надо использовать сигнал
     void currentChanged(int))
А какой слот к нему нужно написать???


Название: Re: QTabWidget
Отправлено: Пантер от Май 04, 2011, 15:20
QTabWidget::setCurrentIndex (int index) или QTabWidget:setCurrentWidget (QWidget *widget).


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 15:25
Что-то не помогает

connect(myTab,SIGNAL(currentChanged(int)),this,SLOT(setCurrentIndex(int)));
так надо???


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 15:26
connect(myTab,SIGNAL(currentChanged(int)),myTab,SLOT(setCurrentIndex(int)));
и так тоже ничего ???


Название: Re: QTabWidget
Отправлено: Пантер от Май 04, 2011, 15:30
Табы и так "листаются" мышкой. Что тебе конкретно надо?
Код, приведенные тобой, примерный? А то у тебя 3 одинаковых таба получается и, конечно, переключения ты не увидишь.


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 15:40
Нет я сам писал. Т.е табы должны быть разные?


Название: Re: QTabWidget
Отправлено: Пантер от Май 04, 2011, 15:44
Какой Widget добавляешь через addTab, тот и увидишь при переключении на эту вкладку.


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 15:50
Делаю вот , вкладки не листаются ??? ??? ???
MyWindow::MyWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyWindow)
{

    myTab = new QTabWidget(this);
    myWidget = new QWidget;
    myWidget2 = new QTextEdit;
    myWidget3 = new QWidget;

    myLayBoxWidget = new QVBoxLayout;



    myLayBoxWidget->addWidget(myTab);

    myTab->addTab(myWidget,QString("MY"));
    myTab->addTab(myWidget2,QString("MY2"));
    myTab->addTab(myWidget3,QString("MY3"));

    connect(myTab,SIGNAL(currentChanged(int)),myTab,SLOT(setCurrentIndex(int)));

    ui->setupUi(this);
}

MyWindow::~MyWindow()
{
    delete ui;
}


Название: Re: QTabWidget
Отправлено: Пантер от Май 04, 2011, 16:05
Код
C++ (Qt)
MyWindow::MyWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MyWindow)
{
   ui->setupUi(this);
 
   myTab = new QTabWidget(this);
 
   myWidget = new QWidget;
   myWidget2 = new QTextEdit;
   myWidget3 = new QWidget;
 
   myLayBoxWidget = new QVBoxLayout;
   myLayBoxWidget->addWidget(myTab);
   setLayout (myLayBoxWidget);
 
   myTab->addTab(myWidget,QString("MY"));
   myTab->addTab(myWidget2,QString("MY2"));
   myTab->addTab(myWidget3,QString("MY3"));
}
 
MyWindow::~MyWindow()
{
   delete ui;
}
 


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 16:08
Спасибо работает ;D


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 16:42
Почему он выдает ошибку:
QWidget::setLayout: Attempting to set QLayout "" on MyWindow "", which already has a layout
когда код:
setLayout (myLayBoxWidget)
используешь
и все равно не видно TextEdit при перелистовании


Название: Re: QTabWidget
Отправлено: Пантер от Май 04, 2011, 16:51
Давай сюда архив с исходниками, я сделаю как нужно, потому что объяснять долго.
А лучше, почитай книги / посмотри примеры.


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 17:01
Вот :)


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 17:01
и :)


Название: Re: QTabWidget
Отправлено: demaker от Май 04, 2011, 17:02
Заранее СПАСИБО :)


Название: Re: QTabWidget
Отправлено: GreatSnake от Май 04, 2011, 17:08
2 demaker :
а зачем ты на QMainWindow заводишь ещё один лейаут? Он ведь на нём уже есть :)
Надо было просто кинуть myTab в центр:
Код
C++ (Qt)
setCentralWidget( myTab );


Название: Re: QTabWidget
Отправлено: demaker от Май 05, 2011, 18:13
Всем СПАСИБО, вроде разобрался  :)