Squish/Navigating a QDateEdit: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=Navigating a QDateEdit=
[[Category:Tools::Squish]]


Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting <span class="caps">API</span> for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map.
= Navigating a QDateEdit =


Usage would be:<br />
Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting API for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map.


===Categories:===
Usage would be:<br /><code>setDate(&quot;:nameOfQDateEdit&amp;quot;, &quot;2011&amp;quot;, &quot;April&amp;quot;, &quot;1&amp;quot;)<code>


* [[:Category:Tools|Tools]]
</code>def setDate(dateedit, year, month, day):<br /> waitFor(&quot;object.exists(dateedit)&quot;, 20000)
** [[:Category:Tools::Squish|Squish]]
 
dateExpandX = findObject(dateedit).width - 10<br /> sendEvent(&quot;QMouseEvent&amp;quot;, waitForObject(dateedit), QEvent.MouseButtonPress, dateExpandX, 15, Qt.LeftButton, 0)<br /> sendEvent(&quot;QMouseEvent&amp;quot;, waitForObject(dateedit), QEvent.MouseButtonRelease, dateExpandX, 15, Qt.LeftButton, 0)
 
yearToolButtonName = &quot;{name='qt_calendar_yearbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}&quot;<br /> clickButton(waitForObject(yearToolButtonName))
 
yearEditSpinBoxName = &quot;{name='qt_calendar_yearedit' type='QSpinBox' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}&quot;<br /> type(waitForObject(yearEditSpinBoxName), year)<br /> type(waitForObject(yearEditSpinBoxName), &quot;&lt;Return&amp;gt;&quot;)
 
monthToolButtonName = &quot;{name='qt_calendar_monthbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}&quot;<br /> clickButton(waitForObject(monthToolButtonName))
 
monthMenuName = &quot;{type='QMenu' unnamed='1' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}&quot;<br /> activateItem(waitForObjectItem(monthMenuName, month))
 
calendarViewName = &quot;{name='qt_calendar_calendarview' type='QCalendarView' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}&quot;<br /> waitFor(&quot;object.exists(calendarViewName)&quot;, 20000)<br /> model = findObject(calendarViewName).model()<br /> seenOne = False<br /> for row in range(1, model.rowCount() - 1): # First row contains day names, let's skip it<br /> for col in range(model.columnCount()):<br /> dayText = model.data(model.index(row, col)).toString()
 
if dayText == &quot;1&amp;quot;: # Some dates from last month may be seen, so make sure we've iterated<br /> seenOne = True # past them before we actually click an item
 
if seenOne and dayText == day:<br /> waitForObjectItem(calendarViewName, &quot;s/%s&amp;quot; (row, col))<br /> clickItem(calendarViewName, &quot;s/%s&amp;quot; (row, col), 14, 11, 0, Qt.LeftButton)

Revision as of 11:19, 24 February 2015


Navigating a QDateEdit

Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting API for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map.

Usage would be:

setDate(&quot;:nameOfQDateEdit&amp;quot;, &quot;2011&amp;quot;, &quot;April&amp;quot;, &quot;1&amp;quot;)<code>

def setDate(dateedit, year, month, day):
waitFor("object.exists(dateedit)", 20000)

dateExpandX = findObject(dateedit).width - 10
sendEvent("QMouseEvent&quot;, waitForObject(dateedit), QEvent.MouseButtonPress, dateExpandX, 15, Qt.LeftButton, 0)
sendEvent("QMouseEvent&quot;, waitForObject(dateedit), QEvent.MouseButtonRelease, dateExpandX, 15, Qt.LeftButton, 0)

yearToolButtonName = "{name='qt_calendar_yearbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
clickButton(waitForObject(yearToolButtonName))

yearEditSpinBoxName = "{name='qt_calendar_yearedit' type='QSpinBox' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
type(waitForObject(yearEditSpinBoxName), year)
type(waitForObject(yearEditSpinBoxName), "<Return&gt;")

monthToolButtonName = "{name='qt_calendar_monthbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
clickButton(waitForObject(monthToolButtonName))

monthMenuName = "{type='QMenu' unnamed='1' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
activateItem(waitForObjectItem(monthMenuName, month))

calendarViewName = "{name='qt_calendar_calendarview' type='QCalendarView' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
waitFor("object.exists(calendarViewName)", 20000)
model = findObject(calendarViewName).model()
seenOne = False
for row in range(1, model.rowCount() - 1): # First row contains day names, let's skip it
for col in range(model.columnCount()):
dayText = model.data(model.index(row, col)).toString()

if dayText == "1&quot;: # Some dates from last month may be seen, so make sure we've iterated
seenOne = True # past them before we actually click an item

if seenOne and dayText == day:
waitForObjectItem(calendarViewName, "s/%s&quot; (row, col))
clickItem(calendarViewName, "s/%s&quot; (row, col), 14, 11, 0, Qt.LeftButton)