Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Turkish
  4. Resim Cakismasi Problemi
Forum Updated to NodeBB v4.3 + New Features

Resim Cakismasi Problemi

Scheduled Pinned Locked Moved Turkish
2 Posts 2 Posters 2.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bc913
    wrote on last edited by
    #1

    Merhaba,

    Uygulamada her combobox secenegini, bir resim dosyasina baglamaya calistim. Ancak, herhangi bir combobox itemini sectigim zaman, gelen her resim, onceki tercihe ait olan resmin ustune geliyor. Bence, hayatina son vermem gereken dinamik nesnelerden kaynaklaniyor ama sinama isleminde problemim var sanirim. O yuzden erisemiyorum o nesnelere. (Uygulamayi QCreator da yaptim ve sadece combobox, lineedit ve qgraphicsview neesneleri iceriyor)

    Baglama isini de Signal-Slot ile yapabilir miyim?

    Ayrica, bu uygulamanin tasarimiyla ilgili fikirlerinizi de belirtirseniz cok memnun olurum...

    Tesekkurler,

    @//main.cpp
    #include "mainwindow.h"
    #include <QApplication>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec&#40;&#41;;
    

    }
    @

    @//mainwindow.h
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include <QGraphicsScene>
    #include <QGraphicsView>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    private slots:
    void on_comboBox_currentIndexChanged(int index);

    private:
    Ui::MainWindow *ui;
    QGraphicsScene *scene;
    QGraphicsView *view;
    };

    #endif // MAINWINDOW_H
    @

    @//mainwindow.cpp
    #include <QGridLayout>
    #include <QGraphicsItem>
    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    scene = new QGraphicsScene(ui->centralWidget);
    view = new QGraphicsView(scene);
    QGridLayout *gLayout = new QGridLayout(ui->centralWidget);
    QVBoxLayout *vLayout = new QVBoxLayout();
    gLayout -> addWidget(ui->comboBox,0,0,1,2);
    gLayout -> addLayout(vLayout, 1,0,3,2);
    gLayout ->addWidget(view,0,2,3,3);

    ui->lineEdit->setEnabled(false);
    ui->lineEdit_2->setEnabled(false);
    ui->lineEdit_3->setEnabled(false);
    

    }

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

    void MainWindow::on_comboBox_currentIndexChanged(int index)
    {
    QGraphicsPixmapItem *item;

    if(index == 0){
    
        ui->lineEdit->hide();
        ui->lineEdit_2->hide();
        ui->lineEdit_3->hide();
        item = new QGraphicsPixmapItem(QPixmap("C:\\....JPG"));
        scene->addItem(item);
        view->show();}
    
    else if(index == 1) {
        ui->lineEdit->show();
        ui->lineEdit_2->show();
        ui->lineEdit_3->hide();
        ui->lineEdit->setEnabled(true);
        ui->lineEdit_2->setEnabled(true);
        item= new QGraphicsPixmapItem(QPixmap("C:\\....JPG"));
        scene->addItem(item);
        view->show();}
    
    else if(index == 2){
        ui->lineEdit->show();
        ui->lineEdit_2->hide();
        ui->lineEdit_3->hide();
        ui->lineEdit->setEnabled(true);
        item = new QGraphicsPixmapItem(QPixmap("C:\\....JPG"));
        scene->addItem(item);
        view->show();}
    

    }
    @

    1 Reply Last reply
    0
    • I Offline
      I Offline
      isgursoy
      wrote on last edited by
      #2

      Signal - Slot mekanizmasini detayli incelemeni tavsiye ederim. Qt'un en can alici meselelerinden biri ve iyi kavranmasi gerekir.
      Signal - Slot mekanizmasinin kriteri signal ve slot'larin parametre uyumudur. Signal'in uyarti verme sekli (signal fonksiyonunun parametresi) slot'un uyarilma sekli (slot fonksiyonunun parametresi) ile uyumlu olmak zorunda. Parametre almayan bir fonksiyon dogal olarak gelen degeri umursamayacagi icin parametre almayan slot'ta her turlu signal tarafindan tetiklenebilir.

      QComboBox ve QGraphicsView ontanimli olarak burda isine yarayabilecek uyumlu hicbir signal/slot ikilisinde bulusmuyorlar diye biliyorum. Yani sorunun cevabi bildigim kadariyla boylece hayir. Ama kendi signal ve slotunu yazarsan durum degisebilir.

      Her new'in bir delete'i vardir. Buna ozen gostermeli, heap'te cop biriktirmemelisin. New'i de delete'i de yerinde ve dogru kullanmalisin. Bu C++.
      @if(!(scene->items().isEmpty())) {scene->removeItem(item);}
      if(item!=0x0) {delete item;}
      item = new QGraphicsPixmapItem(QPixmap("konum"));
      scene->addItem(item);@

      1. satir isin icinde item var mi bakar varsa kaldirir (tam aradigin sey), 2. satir item daha once kurulduysa (ki adresi 0x0 degildir) yok eder, gerisi bizim cocuklar.

      OS X 10.9.2 / qt-mac-opensource-5.2.0-clang

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved