转载

在调用Qt库来实现功能过程中的一些总结

1.对于QTabWidget中tab名字的变化。当其中只有一个&时,Qt Assistant中给出的解释是:If the tab's label contains an ampersand, the letter following the ampersand is used as a shortcut for the tab, e.g. if the label is "Bro&wse" then Alt+W becomes a shortcut which will move the focus to this tab。所以要实现tab标题中带&,则成对输入即可:"&&"表示"&","&&&&"表示"&&"。

2.对于Qt中的窗口,在使用setParent(0)的时候需要注意的地方:

Linux下QDockWidget弹出来,不想让原来的窗口为父窗口,设置了setParent(0),弹出来之后无法获取当前窗口的焦点。因为调用了setParent(0),会移除这个焦点,并且会清楚Qt::Window标记位(只有QMainWind和QDialog会默认有这个flag),所以解决办法是通过当前的dock_widget->setWindwowFlags(Qt::FramelessWindowHint),来设置其为window的flag。在实际做的时候,dock_widget是自己从QDockWidget派生出来的一个累,没有使用window框,所以用这个标记位来设置。

很奇怪的是Windows不需要设置也是正常的。

3.关于模态窗口:

在使用QDialog时,若调用show(),则会让当前窗口成为模态,并且block后面所有得窗口,若想前面窗口和后面窗口同步操作,则可以通过以下2种方法实现(本质上应该算一种):

1)qApp->processEvents();

2)QTimer::singleShot(200, view, SLOT(qApp->processEvents()));//方法2)是之前网上找到的

view->setWindowFlags(Qt::WindowStaysOnTopHint);

其中view为当前窗口。

具体的函数定义可以参考Qt使用手册,推荐使用第一种方法,因为第二种是一个QTimer时间,要设置时间,这个时间是一个经验值,不好控制。

正文到此结束
Loading...