我正在尝试找到通过这些项目的coord.x()或coord.y()对QGraphicsitems的QList进行排序的最佳方法。我在几个月内进行了很多搜索,但仍未找到解决方案,...应该是这样的,...抱歉,我是菜鸟,...我正在努力!谢谢! (关于它应该如何的想法...)
void sortedby()
{
QList<QGraphicsItem *> allitems = items();
QList<QGraphicsItem *> alltypedos;
foreach(auto item, allitems) {
if(item->type() == chord::Type) {
alltypedos.append(item);
}
}
qSort(alltypedos.begin(), alltypedos.end(), item->x());
}
答案 0 :(得分:0)
只需将:root {
--background-black: #2f3640;
--background-red: red;
--search-box-padding: 10px;
--search-box-size: 40px;
}
html, body {
margin: 0;
padding: 0;
background-color: var(--background-red);
}
h1 {
color: orange;
font-family: Arial;
margin-left: 1rem;
}
.search-box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%);
height: var(--search-box-size);
width: var(--search-box-size);
background-color: var(--background-black);
border-radius: 50%;
padding: var(--search-box-padding);
cursor: pointer;
}
.search-box > .fa-search {
padding: var(--search-box-padding);
width: 100%;
height: 100%;
box-sizing: border-box;
border-radius: 50%;
color: var(--background-red);
}
.search-box:hover > .fa-search {
background: white;
}
.search-txt {
position: absolute;
top: var(--search-box-padding);
left: calc(var(--search-box-size) + var(--search-box-padding));
border: none;
outline: none;
padding: 0;
height: var(--search-box-size);
width: 0px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
background-color: var(--background-black);
color: white;
font-size: 16px;
transition: 0.4s width, 0.4s padding;
}
.search-box:hover > .search-txt{
width: 240px;
padding: 0 0.75rem;
}
与自定义比较功能一起使用:
std::sort
bool lessThan(QGraphicsItem * left, QGraphicsItem * right)
{
return (left->x() < right->x());
}