crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Работа с QTabWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
wiz29 Дата 12.4.2011, 14:56
  Дизайнер избавляет от "груды" однотипного и рутинного кода, экономя на этом время.
RazrFalcon Дата 12.4.2011, 13:54
  Тогда получается, что работать с дизайнером действительно проще ^_^
wiz29 Дата 12.4.2011, 13:39
 
Цитата(RazrFalcon @ 12.4.2011, 14:31) *
То есть, как я понял, допклассы создавать не нужно. Можно все реализовывать через WallWindow?

Именно так и есть. Тебе доступны все объекты форм в WallWindow. не зависимо от того в каком из табов они расположены.
RazrFalcon Дата 12.4.2011, 13:31
  Да-да. Это просто тестовый проект.

То есть, как я понял, допклассы создавать не нужно. Можно все реализовывать через WallWindow?
wiz29 Дата 12.4.2011, 13:31
  Сделай проще архитектурно, у тебя есть один диалог с табом, причем табы не динамические.
Тут у тебя есть уже готовые объекты которыми будешь управлять из WallWindow.
ListTab и FolderTab у тебя вообще не используется, тк вся форма создается в дизайнере вместе с наполнением. У тебя есть доступ ко всем объектам табов по именам в любой части WallWindow, поэтому не стесняясь можно создавать нужные слоты в WallWindow и наполнять функциональностью.
P.S. не забывай нормально именовать объекты в QtDesigner, самому будет проще разбираться что к чему, тк имена переменных pushButton1, pushButton2 не информативны:)

class WallWindow : public QMainWindow, private Ui::WallWindow
{
    Q_OBJECT

public:
    WallWindow(QWidget *parent = 0);

private slots:

    void on_addFolderButton_clicked();
    void tableFill();
    int setImage();
    void processStart(QString path, QString arg);
    QList<int> createRandomNumberList();

    void startButton_clicked();
    void on_onlynames_checkBox_stateChanged(int );
    void on_timeBox_valueChanged(int );
    void addButton_clicked();
    void on_table_cellDoubleClicked(int row, int column);
    void on_table_cellClicked(int row, int column);
    void clearButton_clicked();
    void on_pos_comboBox_currentIndexChanged(QString name);
    void order_comboBox_currentIndexChanged(QString name);
    void config_save();
    void nextImage();
    void previousImage();
    void iconActivated(QSystemTrayIcon::ActivationReason reason);
};


Остальные классы тебе в данном случае не нужны
RazrFalcon Дата 12.4.2011, 12:59
  Да знаю что не правильно. Тут то табы уже созданы. А если делать как я раньше делал, то нужно было их создавать.
wiz29 Дата 12.4.2011, 8:25
  естественно не работает, потому что не правильно делаешь:) Выложи код если не трудно, посмотрю
RazrFalcon Дата 11.4.2011, 20:16
  И снова эти табы!
Теперь проблема с Ui
.h
Раскрывающийся текст
#ifndef WALLWINDOW_H
#define WALLWINDOW_H

#include <QMainWindow>
#include "ui_wallwindow.h"

class WallWindow : public QMainWindow, private Ui::WallWindow
{
    Q_OBJECT

public:
    WallWindow(QWidget *parent = 0);
};

class ListTab : public QWidget, private Ui::WallWindow
{
    Q_OBJECT

public:
    ListTab(QWidget *parent = 0);

public slots:
};

class folderTab : public QWidget, private Ui::WallWindow
{
    Q_OBJECT

public:
    folderTab(QWidget *parent = 0);

public slots:
};

#endif // WALLWINDOW_H

.cpp
Раскрывающийся текст
#include <QtDebug>

#include "wallwindow.h"

WallWindow::WallWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setupUi(this);
    //QWidget *mainWidget = new QWidget;
    //mainWidget->setLayout(verticalLayout);
    //setCentralWidget(mainWidget);
    qDebug()<<gridLayout_2->rowCount();
    gridLayout_2->setAlignment(spinBox,Qt::AlignRight);
}

ListTab::ListTab(QWidget *parent) : QWidget(parent)
{
    //gridLayout_2->setAlignment(spinBox,Qt::AlignRight);
    //setLayout(gridLayout_2);
    //qDebug()<<gridLayout_2->rowCount();
    //gridLayout_2->itemAtPosition(0,5)->setAlignment(Qt::AlignRight);
}


Все что я делаю в ListTab::ListTab не на что не влияет. Даже qDebug() не обрабатывается!
RazrFalcon Дата 11.4.2011, 15:46
  Ура! Спасибо. Работает как надо.
Я бы сам не додумался до такого. Просто еще не разу с таким количеством классов не сталкивался.
Теперь по аналогии можно доделывать все что я хотел.
wiz29 Дата 11.4.2011, 15:36
 
Цитата(RazrFalcon @ 11.4.2011, 16:23) *
Я так делал. Но таблица в первом табе не заполняется.

На счет совета: я знаю, просто ради интереса хотелось и в этом разобраться. Понять как оно изнутри работает.

так твоя таблица должна быть связана с settingsTab?


если это так, тогда все просто

измени конструктор settingTab на settingTab(ListTab* pListTab, QWidget *parent = 0)
settingTab::settingTab(ListTab* pListTab, QWidget *parent) : QWidget(parent)
{
    m_pListTab = pListTab;
  settings = new QSettings(QSettings::IniFormat, QSettings::UserScope,
                           "wallpapers-changer", "wallchanger");
...............
}

WallWindow::WallWindow()
{
........

  listTab = new ListTab;
  settTab = new settingTab(listTab);
........
}



Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 2.2.2023, 20:40