crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Работа с QTabWidget, взаимодействие между классами.
RazrFalcon
  опции профиля:
сообщение 11.4.2011, 15:23
Сообщение #21


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я так делал. Но таблица в первом табе не заполняется.

На счет совета: я знаю, просто ради интереса хотелось и в этом разобраться. Понять как оно изнутри работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 11.4.2011, 15:36
Сообщение #22


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(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);
........
}



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.4.2011, 15:46
Сообщение #23


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ура! Спасибо. Работает как надо.
Я бы сам не додумался до такого. Просто еще не разу с таким количеством классов не сталкивался.
Теперь по аналогии можно доделывать все что я хотел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.4.2011, 20:16
Сообщение #24


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


И снова эти табы!
Теперь проблема с 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, 20:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.4.2011, 8:25
Сообщение #25


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


естественно не работает, потому что не правильно делаешь:) Выложи код если не трудно, посмотрю
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 12.4.2011, 12:59
Сообщение #26


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Да знаю что не правильно. Тут то табы уже созданы. А если делать как я раньше делал, то нужно было их создавать.

Сообщение отредактировал RazrFalcon - 12.4.2011, 13:00
Прикрепленные файлы
Прикрепленный файл  wall.zip ( 3.59 килобайт ) Кол-во скачиваний: 74
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.4.2011, 13:31
Сообщение #27


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Сделай проще архитектурно, у тебя есть один диалог с табом, причем табы не динамические.
Тут у тебя есть уже готовые объекты которыми будешь управлять из 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, 13:31
Сообщение #28


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Да-да. Это просто тестовый проект.

То есть, как я понял, допклассы создавать не нужно. Можно все реализовывать через WallWindow?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.4.2011, 13:39
Сообщение #29


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(RazrFalcon @ 12.4.2011, 14:31) *
То есть, как я понял, допклассы создавать не нужно. Можно все реализовывать через WallWindow?

Именно так и есть. Тебе доступны все объекты форм в WallWindow. не зависимо от того в каком из табов они расположены.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 12.4.2011, 13:54
Сообщение #30


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Тогда получается, что работать с дизайнером действительно проще ^_^
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.2.2023, 21:04