Russian Qt Forum
Май 06, 2024, 05:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 19 20 [21]
301  Qt / Вопросы новичков / Re: Как в Qt создать функцию для работы с разными виджетами? : Октябрь 27, 2014, 16:58
огромное спасибо) нужно попробовать)
302  Qt / Вопросы новичков / Re: Как в Qt создать функцию для работы с разными виджетами? : Октябрь 27, 2014, 16:19
А пример это так, чтобы люди могли понять, в чем был мой вопрос. Реальная задача, которая стоит передо мной намного сложнее. 
303  Qt / Вопросы новичков / Re: Как в Qt создать функцию для работы с разными виджетами? : Октябрь 27, 2014, 16:14
layout-ами могу пользоваться, мне просто нужно понять как можно создать функцию, в которую бы можно было бы посылать любой виджет, а не виджет конкретного типа.
304  Qt / Вопросы новичков / Re: Как в Qt создать функцию для работы с разными виджетами? : Октябрь 27, 2014, 15:55
Дело в том,что я хочу создать функцию, у которой в качестве входного параметра был бы некий объект или указатель на объект, вместо которого, вызывая эту функцию можно было бы посылать в нее к примеру кнопку, или простой виджет, или же поле. Давайте я на небольшом примере обрисую вам, то что я хочу сделать:


// ----- main.cpp -----
#include "myclass.h"
#include <QTextCodec>

int main(int argc,char *argv[])
{
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"""));

    QApplication app(argc,argv);
    MyClass mycl;
    mycl.show();
    return app.exec();
}



//------myclass.h---------
#ifndef MYCLASS_H
#define MYCLASS_H

#include <QtGui>
#include <QDialog>

class MyClass : public QDialog{
    Q_OBJECT

  public:
    MyClass(QWidget *parent=0);
    void show_wgt(TypePar *parameter, x, y, w, h);

  public slots:
    void set_showedWidget();

  private:
    QLineEdit *lineName;
    QLabel *nameObject;
    QPushButton *showWidget;
    QPushButton *close;

    int size_w;
    int size_h;
};

#endif // MYCLASS_H




// ---------myclass.cpp-------
#include "myclass.h"

MyClass::MyClass(QWidget *parent)
        :QDialog(parent){

    size_w = 400;
    size_h = 400;
    setFixedSize(size_w, size_h);
    setWindowTitle("Создание разных типов виджетов");

    int x, y, w, h;

    x = 40;  y = 8;
    w = 100;  h = 25;
    nameObject = new QLabel(this);
    nameObject->setText("gdggb");
    nameObject->setGeometry(x, y, w, h);

    x = 110;  y = 45;
    w = 90;  h = 25;
    lineName = new QLineEdit(this);
    lineName->setText("");
    lineName->setGeometry(x, y, w, h);

    x = 210;  y = 10;
    w = 90;  h = 28;
    showWidget = new QPushButton(this);
    showWidget->setText("Показать");
    showWidget->setGeometry(x, y, w, h);
    connect(showWidget, SIGNAL(clicked()), this, SLOT(set_showedWidget()));

    x = 210;  y = 45;
    w = 90;  h = 28;
    close = new QPushButton(this);
    close->setText("Выйти");
    close->setGeometry(x, y, w, h);
    connect(close, SIGNAL(clicked()), this, SLOT(close()));
}

void MyClass::set_showedWidget(){
    int x, y, w, h;

    x = 20;    y = 45;
    w = 70;    h = 25;

    if(lineName->text() == "QWidget"){
        nameObject->setText("QWidget");
        QWidget *wgt1 = new QWidget(this);
        show_wgt(wgt1, x, y, w, h);
     }
    else if(lineName->text() == "QLabel"){
        nameObject->setText("QLabel");
        QLabel *wgt2 = new QLabel(this);
        show_wgt(wgt2, x, y, w, h);

    }
    else if(lineName->text() == "QPushButton"){
        nameObject->setText("QPushButton");
        QPushButton *wgt3 = new QPushButton(this);
        show_wgt(wgt3, x, y, w, h);
    }
    else
       nameObject->setText("не тот тип");
}


void MyClass::show_wgt(TypePar *parameter, x, y, w, h){
    if(parameter->metaObject == "QWidget")
        parameter->setStyleSheet("QWidget {background-color: red}");
    if(parameter->metaObject == "QLabel")
        parameter->setText(lineName->text());
    if(parameter->metaObject == "QPushButton")
        parameter->setText(lineName->text());
    parameter->setGeometry(x, y, w, h);
    parameter->show();
}

Проблема состоит в том, что я не знаю что поставить вместо TypePar *parameter в функции show_wgt(TypePar *parameter, x, y, w, h),  для того, чтобы этот пример заработал.

305  Qt / Вопросы новичков / Как в Qt создать функцию для работы с разными виджетами? : Октябрь 27, 2014, 13:04
Здраствуйте, господа форумчаны. У меня вот появилась необходимость создать некую функцию, которая б принимала виджет, и уже определив что это за виджет производила бы определенные действия с ним. Но беда в том, что не могу пока понять как это сделать, ведь у каждого виджета свои параметры, свои методы. Может кто-то уже стыкался с данной проблемой? Буду рад советам по ее решению.
306  Qt / Вопросы новичков / Как создать в проекте каталог в каталоге с помощью pri-файлов в QtCreator? : Апрель 24, 2014, 09:33
Здраствуйте, Господа форумчаны!
 
Уже около пол года по-немногу изучаю Qt. На данный момент использую среду Qt4.5. Буквально вчера задался
вопросом: "Как построить структуру каталогов проекта в QtCreator?". Ранее я просто раскидывал файлы
проекта по паппкам и подключал их в pro-файл. Но в Creator-e все файлы всеравно отображались как в одном
главном каталоге проэкта. После "стандартного" поиска по форумам удалось найти ответ. Удалось построить "двух-уровневую" структуру каталогов проекта используя файл *.pro и файлы *.pri. К примеру:
------------------------------
   -Tetris
       tetris.pro
       tetris.cpp
       tetris.h
       -logic
          logic.pri
          logic.cpp
          logic.h
       -resource
          resource.pri
          resource.qrc 
------------------------------

Для этого создал следующие файлы:

   tetris.pro
------------------------------
   TEMPLATE = app
   TARGET = Tetris
   include(logic/logic.pri)
   include(resource/resource.pri)
   SOURCES += tetris.cpp
   HEADERS += tetris.h
------------------------------

   logic.pri
------------------------------
   SOURCES += logic/logic.cpp
   HEADERS += logic/logic.h
------------------------------

    resource.pri
--------------------------------------
    RESOURCES += resource/resource.qrc
--------------------------------------

Это вобщем-то не составило труда. Но вот беда, создать "трех-уровневую" структуру каталогов в проекте
так и не удалось. Хотелось бы создать к примеру следующую структуру:

------------------------------
   -Tetris
       tetris.pro
       tetris.cpp
       tetris.h
       -logic
          logic.pri
          logic.cpp
          logic.h
          -level
             level.pri
             level.cpp
             level.h 
       -resource
          resource.pri
          resource.qrc 
------------------------------

Подключение level.pri файла в logic.pri файл результата не дало, так как Creator видит каталог "level" как подкаталог главного каталога проэкта "Tetris", а не каталога "logic". 

Может кто-то из здешних форумчанинов уже стыкался с подобной проблемой, и знает как ее решить?
Страниц: 1 ... 19 20 [21]

Страница сгенерирована за 0.06 секунд. Запросов: 23.