Related #576 High/Low DPI Adapting

The Qt UI would change the size according to the logical DPI of the computer
Only Windows and Linux have been tested. (Should also work on Mac but have not tested).
The function is unfinished.
<sup>I previously left this comment on an outdated commit where it was difficult to see, so reposting here.</sup>


I think we're still overcomplicating this. We probably don't need anything more complicated than this:

```python
def adjust_dpi(logical_dpi, *args):
    try: # QSize
        width, height = args[0].width(), args[0].height()
    except AttributeError:
        width, height = args[0], args[1]
    return QSize(round(width * logical_dpi['x']), round(height * logical_dpi['y']))
```

But if this ever raises an exception, it's not as clear as the exception that the overridden method would raise. For example
```python
self.recordButton.setFixedSize(60)
# => TypeError: unsupported operand type(s) for *: 'dict' and 'float'

self.recordButton.setFixedSize(60)
# => TypeError: arguments did not match any overloaded call:
#        QWidget.setFixedSize(QSize): argument 1 has unexpected type 'int'
#        QWidget.setFixedSize(int, int): not enough arguments
```

One option I can think of to get that clarity is when you override the methods, try calling the parent method first so it has a chance to raise a more descriptive error.

```python
def setMinimumSize(self, *args):
    super(QWidgetWithDpi, self).setMinimumSize(*args)
    super(QWidgetWithDpi, self).setMinimumSize(adjust_dpi(self.logical_dpi, *args))
```

There's probably even better ways to handle this in Python and someone else on the team will know.