pierwsze rozwiązanie
Możesz dodać następującą flagę flagami okna, aby zapobiec okno przed zmieniany przez użytkownika:
setWindowFlags(this->windowFlags() |= Qt::FramelessWindowHint);
Oto więcej informacji na temat Window Flags.
Drugie rozwiązanie (brzydki) eksperyment
Jest to swego rodzaju brudnej roboty wokół ... Jestem w pełni świadomy faktu, że to nie jest czysty.
Właśnie napisałem to małe okno główne, które ręcznie zmienia kursor, gdy pozostawi się obszar okna głównego.
Uwaga: Należy wziąć pod uwagę efekty uboczne. Być może istnieje inny kształt kursora potrzebny dla widżetu podrzędnego, ale to przesłoni kursor dla kompletnej aplikacji.
Może to służyć jako punkt wyjścia do dalszego rozwoju i prostych aplikacji.
Header:
class CMainWindow :
public QMainWindow
{
public:
CMainWindow(QWidget* parent = nullptr);
virtual ~CMainWindow(void);
protected:
virtual void leaveEvent(QEvent *event);
virtual void enterEvent(QEvent *event);
};
cpp:
CMainWindow::CMainWindow(QWidget* parent) : QMainWindow(parent)
{
setMouseTracking(true);
}
CMainWindow::~CMainWindow(void)
{
}
void CMainWindow::leaveEvent(QEvent *event)
{
qApp->setOverrideCursor(QCursor(Qt::ArrowCursor));
QMainWindow::leaveEvent(event);
}
void CMainWindow::enterEvent(QEvent *event)
{
qApp->restoreOverrideCursor();
QMainWindow::enterEvent(event);
}
Interesujące pytanie. Nie jestem nawet pewien, czy to możliwe. Czy to nie jest funkcja menedżera okien?To ** mogło ** być, że Qt nie ma kontroli nad tym kursorem. Być może powinieneś dodać więcej tagów do swojego pytania. "Menedżer okien"? Jaki system operacyjny? Jakiego menedżera okien używasz? Może zaistnieć potrzeba innego rodzaju ekspertyzy, aby rozwiązać twój problem, niż myślisz. – Greenflow
Nie jestem pewien - ustawia flagę okna na 'Qt :: Dialog | QT :: Window' zrobić coś? –
Czy to jest dla twojego głównego okna? Którą wersję Qt używasz? – thuga