0
Я хочу сделать что-то очень похожее на это изображение в Qt, где я могу щелкнуть по любому квадрату и изменить его цвет.Как создать сетку в Qt с цветами?
Я хочу сделать что-то очень похожее на это изображение в Qt, где я могу щелкнуть по любому квадрату и изменить его цвет.Как создать сетку в Qt с цветами?
Это довольно просто сделать это с помощью 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;
}
}
Это все, что вам нужно иметь прямоугольную шахматы, как сетка, где каждая клетка меняет свой цвет при нажатии на. Конечно, вам нужно будет адаптировать его к вашим потребностям, но этого должно быть достаточно для начала.
Вы должны посмотреть на класс QTableView. Используя это, вы можете представить предоставленное изображение. Затем каждый раз, когда сигнал щелчка выделяется в ячейке, он открывает класс QColorDialog, чтобы вы могли выбрать цвет для обновления. – SRD
Существует несколько способов сделать это, в зависимости от вашего варианта использования. Насколько велика эта шкала? Если это всегда размер предоставленного изображения, «QTableView», как упоминалось выше, является хорошей ставкой. Если вы имеете дело с множеством квадратов или хотите больше взаимодействовать, чем просто менять цвета, вам могут потребоваться QGraphicsScene'/'QGraphicsView' или QML. –