LINUX.ORG.RU

Сообщения september_valentine

 

унаследовал QGraphicsProxyWidget, но почему то функции QGraphicsProxyWidget не работают

Привет всем! я хочу сделать следующие... добавить в QGraphicsScene qml виджет QDeclarativeView и заставить его двигаться и поворачивать этот qml виджет... для этого я создал класс Control и наследовал от QGraphicsProxyWidget,

class Control : public QGraphicsProxyWidget
{
public:
    explicit Control(QGraphicsItem *parent = 0) : QGraphicsProxyWidget(parent) { }

далее я хочу для начало qml виджет переместить в заданные координаты

mp_dlrtvView->setSource(QUrl("qrc:/tank/tank1.qml"));
    mp_control = new Control(mp_scene->addWidget(mp_dlrtvView));
    mp_control->setPos(500, 500);
    mp_grView->setScene(mp_scene);
но почему то не перемещается qml виджет...

поскажите что я делаю неправильно ? как это исправить ?

 ,

september_valentine
()

как добавить qml виджет в QGraphicsScene ?

привет всем! я хочу добавить qml виджет версии Qquick 2.0 в QGraphicsScene, как это сделать ? в документации нашол как добавлять qml виджет версии Qquick 1.0

QGraphicsScene* scene = myExistingGraphicsScene();
 QDeclarativeEngine *engine = new QDeclarativeEngine;
 QDeclarativeComponent component(engine, QUrl::fromLocalFile("myqml.qml"));
 QGraphicsObject *object =
     qobject_cast<QGraphicsObject *>(component.create());
 scene->addItem(object);

вот код который я пытался добавить qml виджет в QGraphicsScene

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QQuickView* view1 = new QQuickView;
    view1->setSource(QUrl("qrc:/tank/simple_tank.qml"));


    QGraphicsScene scene;
    QWidget* wgt1 = QWidget::createWindowContainer(view1);
    QGraphicsWidget* wgt2 = scene.addWidget(wgt1);
    wgt2->resize(200, 200);

    QGraphicsView gview(&scene);
    gview.showMaximized();
    return a.exec();
}

в QGraphicsView выводит всего лишь пустой wgt1...поскажите как это исправить ?

 ,

september_valentine
()

не работает QSqlTableModel в моем классе

Привет всем! вот такая не понятная проблема... создал БД ...когда считываю с БД, использую модель QSqlTableModel и все эти данные отображаю в QTableView... и у меня почему то не фига не получается отобразить

создаю и считываю все в конструкторе

ModelSql::ModelSql(QWidget* parent) : QWidget(parent)
{
    setupUi(this);
    setWindowTitle("Курсовая работа");
    m_lst<<"Марка контроллера"<<"Фирма-изготовитель"<<"Ориентировочная цена"
         <<"Количество аналоговых входов"<<"Количество аналоговых выводов"
         <<"Количество дискретных входов"<<"Количество дискретных выходов";
    comboBox->addItems(m_lst);
    comboBox_2->addItems(m_lst);
    if(!createConnection()) QMessageBox::critical(this, "", "Невозможно открыть БД");

    QSqlQuery query;
    query.exec("CREATE TABLE microcontroller"
               "("
                    "'Марка контроллера'                  VARCHAR(30),"
                    "'Фирма-изготовитель'                 VARCHAR(30),"
                    "'Ориентировочная цена'               VARCHAR(30),"
                    "'Количество аналоговых входов'       VARCHAR(30),"
                    "'Количество аналоговых выводов'      VARCHAR(30),"
                    "'Количество дискретных входов'       VARCHAR(30),"
                    "'Количество дискретных выходов'      VARCHAR(30)"
               ");");
    mp_model->setTable("microcontroller");
    mp_model->select();
    mp_model->setEditStrategy(QSqlTableModel::OnFieldChange);
    tableView->setModel(mp_model);
} 

но почему то в функции main() получается отобразить данные

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ModelSql cour;

    QSqlTableModel* mp_model = new QSqlTableModel;

    mp_model->setTable("microcontroller");
    mp_model->select();
    cour.tableView->setModel(mp_model);

    cour.show();
    return a.exec();
}

почему работает в функции main() , а моем классе нет ? что я не так делаю?

 , ,

september_valentine
()

не находит phonon

привет всем! пользуюсь qt creator 2.7.2 qt 5.1.0... linux mint 15 что нужно прописать в .pro файле чтобы находил phonon ? QT += phonon не помогает...

 ,

september_valentine
()

unresolved overloaded function type

Привет всем!у меня проблема... значит создал функцию с параметром указатель на функцию

void Graph::show_edge(void (*visit)(const string&, const string&)) const
{
    for(size_t i = 0; i < m_edge.size(); i++)
        for(size_t j = 0; j < m_edge[i].size(); j++)
            if(m_edge[i][j])
                visit(get_vertex(i), get_vertex(j));
}
теперь когда я вызываю эту функцию и вписываю в параметр лямду функцию
else if(boost::regex_match(lineEdit->text().toStdString(), show_vertex))
     {
         pm_graph->show_edge([this](const string& str1, const string& str2)
         {
             pm_show->text_label("Вершина ");
             pm_show->text_label(QString::fromStdString(str1));
             pm_show->text_label(" смежна с вершиной ");
             pm_show->text_label(QString::fromStdString(str2));
             pm_show->text_label("\n");
         });
         pm_show->show_scroll();
     }
компилятор сообщаяет о такой ошибки /home/september/Проекты/visual_graph/visualizer_graph/visualizer.cpp:114: ошибка: no matching function for call to 'Graph::show_edge(Visualizer::slot_perform()::<lambda(const string&, const string&)>)' потом начал делать по другому, т.е. создал функцию
void visit(const string& str1, const string& str2)
    {
        pm_show->text_label("Вершина ");
        pm_show->text_label(QString::fromStdString(str1));
        pm_show->text_label(" смежна с вершиной ");
        pm_show->text_label(QString::fromStdString(str2));
        pm_show->text_label("\n");
    }

потом вызваю метод show_edge c параметром visit

else if(boost::regex_match(lineEdit->text().toStdString(), show_vertex))
     {
         pm_graph->show_edge(visit);
         pm_show->show_scroll();
     }
компилятор выдает такую ошибку /home/september/Проекты/visual_graph/visualizer_graph/visualizer.cpp:107: ошибка: no matching function for call to 'Graph::show_edge(<unresolved overloaded function type>)' кстатит функция show_edge вызываю с слоте - функции... что я делаю не так ? где моя ошибка ?

 ,

september_valentine
()

исходник CustomGraphicsView из книги Макс Шлее Qt 4.8

Привет! у меня такая проблема...разбирал исходник который был приведен в книге Макс Шлее Qt 4.8 профессиональное программирование на с++ пример CustomGraphicsView листинг 21...потом я решил немного изменить , чтобы можно было рисовать мышкой линию, т.е взял подставил за место класса QGraphicsScene scene свой класс MyScene1 scene. Там я унаследовал mousePressEvent и mouseMoveEvent чтобы можно рисовать линию...все работает отлично как и задумалось...теперь я решил изменить курсор над линию который нарисовал pm_line->setCursor(Qt::OpenHandCursor); и здесь появляется проблема, т.е. нажимаешь на кнопку мыши, чтобы установить начальные координаты мыши, потом перемещаюшь мышкой и отпускаешь кнопку, а линия досихпор продолжает перемещается за мышкой, так и не получается установить конечные координаты линии...вы наверно скажите надо унаследовать mouseReleaseEvent, но не понимаю зачем, если после отпускание кнопки мыши, должна нарисоваться линия... почему так происходит ? как можно это исправить ? вот код

class MyScene1 : public QGraphicsScene
{
    Q_OBJECT
public:
     MyScene1(const QRectF& scene, QObject* parent = nullptr) : QGraphicsScene(scene, parent)
    {
    }

private:
    QGraphicsLineItem* pm_line = new QGraphicsLineItem;
    qreal x_line, y_line;
    bool m_flag;

    void mousePressEvent(QGraphicsSceneMouseEvent* event)
    {
        x_line = event->scenePos().x();
        y_line = event->scenePos().y();
        pm_line = addLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());
        pm_line->setCursor(Qt::OpenHandCursor);

    }

    void mouseMoveEvent(QGraphicsSceneMouseEvent* event)
    {
        pm_line->setLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());

    }
};

 ,

september_valentine
()

RSS подписка на новые темы