2016-05-08 10 views
0

Qtでこの画像と非常によく似たことをしたいところです。どこの四角をクリックして色を変えることができます。Qtで色を使ってグリッドを作成するには?

Image

+1

QTableViewクラスを見てください。これを使用すると、提供されたイメージを表すことができます。次に、クリック信号がセルでエミッションされるたびにQColorDialogクラスを開き、更新する色を選択できます。 – SRD

+1

ユースケースに応じて、これを行うにはいくつかの方法があります。この尺度はどれくらいの大きさですか?提供されたイメージのサイズが常に大きければ、前述のように 'QTableView'は良い賭けです。たくさんの四角形を扱っている場合や色を変えるだけではなく、より多くのやりとりをしたい場合は、 'QGraphicsScene' /' QGraphicsView'やQMLを呼び出すことができます。 –

答えて

0

それはQMLでこれを行うにはかなり簡単です。

import QtQuick 2.1 
import QtQuick.Window 2.0 

Window { 
    id: root 
    visible: true 
    width: 360 
    height: 500 
    Column{ 
     Repeater{ 
      model: getRowsNumber(root.height) 
      delegate: Row{ 
       property int externalIdx: index 
       Repeater{ 
        model: getColumnsNumber(root.width) 
        delegate: Rectangle{ 
         property bool selected: false 
         property color originalColor: (index + externalIdx) % 2 == 0 ? "black" : "white" 

         width:20 
         height: 20 
         color: selected ? "red" : originalColor 
         border.width: 1 
         border.color: "black" 
         MouseArea{ 
          anchors.fill: parent 
          onClicked: parent.selected = !parent.selected 
         } 
        } 
       } 
      } 
     } 
    } 

    function getColumnsNumber(width){ 
     return width/20; 
    } 
    function getRowsNumber(height){ 
     return height/20; 
    } 
} 

あなたはそれがクリックされたときに、各セルはその色が変化する長方形のチェスのようなグリッドを持っている必要がすべてです:以下のコードを見てください。もちろん、それをあなたのニーズに適応させる必要がありますが、それはあなたが始めるのに十分であるはずです。

関連する問題