I think there are some aspects of quality which are not covered by simplicity. For example, how large a typo do you have to make to change correct code to incorrect code, and how hard is it to notice that typo? (Is your style for an assignment and an equality test in a conditional very close?) How hard is it to prepare a patch which does not affect any lines that it doesn't need to affect? (Do you have to add a comma to the line containing a list element you are not changing? Do you have to reproduce hidden whitespace in lines you changed during development but put back?) Do your function names suggest the right effects and not the wrong ones? Are your function behaviors systematic? How closely are different stylistic conventions mixed?
I think a lot of the quality question comes down to how predictable the code is from its purpose and the rest of the code in the system. Complexity of the design limits this, and you can think of it as less entropy and therefore less complexity, but the term "complexity" doesn't usually make people wonder how many bits of entropy there are in the whitespace in the codebase.