背景:我正在尝试制作日历应用。我通过为给定月份中的每个日期安排QGraphicsItemGroup元素来创建月份的自定义视图。所有QGraphicsItemGroup元素都在列表中以便于迭代。当鼠标悬停在某个日期上时,背景会变为灰色。单击日期时,背景将变为蓝色。单击另一个日期时,它将标记为蓝色,并清除上一个日期。
月概述
问题我只希望最后点击的日期有蓝色背景,而不是所有点击的日期。所有其他日期元素应具有白色背景。我无法弄清楚如何将日期列表中的一个QGraphicsItemGroup元素的信号发送到该列表中的所有元素。
当前代码:
<asp:Repeater ID="rptUsers" runat="server">
<HeaderTemplate>
<table class="table table-striped table-bordered table-hover" id="UserList">
<thead>
<tr>
<th class="hidden">ID</th>
<th style="text-align: center">Kullanıcı Adı</th>
<th style="text-align: center">Ad</th>
<th style="text-align: center">Soyad</th>
<th style="text-align: center">IsAdmin</th>
<th style="text-align: center">Durum</th>
<th style="text-align: center">Rapor Göster</th>
<th style="text-align: center">Sil</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr class="<%# Eval("Durum") %>">
<td class="hidden">
<asp:Label ID="lblSira" runat="server" Text='<%# Eval("ID") %>' />
</td>
<td style="pointer-events: none; text-align: center">
<asp:Label ID="lblKullaniciAdi" runat="server" Text='<%# Eval("KullaniciAdi") %>' />
</td>
<td style="pointer-events: none; text-align: center">
<asp:Label ID="lblAd" runat="server" Text='<%# Eval("Ad") %>' />
</td>
<td style="pointer-events: none; text-align: center">
<asp:Label ID="lblSoyad" runat="server" Text='<%# Eval("Soyad") %>' />
</td>
<td style="pointer-events: none; text-align: center">
<asp:Label ID="lblAdmin" runat="server" Text='<%# Eval("IsAdmin") %>' />
</td>
<td style="pointer-events: none; text-align: center">
<asp:Label ID="lblDurum" runat="server" Text='<%# Eval("Durum") %>' />
</td>
<td>
<asp:Button ID="btn_Show" class="btn btn-primary center-block" OnClick="btn_Show_Click" runat="server" Text="Göster" />
</td>
<td>
<asp:Button ID="btn_Delete" class="btn btn-danger center-block" OnClick="btn_Delete_Click" runat="server" Text="Sil" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody> </table>
</FooterTemplate>
</asp:Repeater>
可能的解决方案:
答案 0 :(得分:0)
CalendarList
不是继承自QObject
的类,所以它不支持信号,我的回答是通过scene().items()
获取项目,然后我们只过滤DateElement
类的项目具有真实状态,然后将使用clearRectangle()
方法:
def mousePressEvent(self, event):
for item in self.scene().items():
if isinstance(item, DateElement):
if item.status:
item.clearRectangle()
self.rectangle.setAcceptHoverEvents(False)
self.rectangle.setBrush(QBrush(Qt.blue))
#self.update()